• PostgreSQL 创建触发器 Trigger


    触发器的知识点: 

    1. PostgreSQL在以下情况下执行/调用触发器:在尝试操作之前(在检查约束并尝试INSERTUPDATEDELETE之前)。或者在操作完成后(在检查约束并且INSERTUPDATEDELETE完成后)。或者不是操作(在视图中INSERTUPDATEDELETE的情况下)

    2. 对于操作修改的每一行,都会调用一个标记为FOR EACH ROWS的触发器。 另一方面,标记为FOR EACH STATEMENT的触发器只对任何给定的操作执行一次,而不管它修改多少行。

    3. 您可以为同一事件定义同一类型的多个触发器,但条件是按名称按字母顺序触发。

    4. 当与它们相关联的表被删除时,触发器被自动删除。

    step1:  创建记录日志表, 跟踪记录表上的所有操作

      create table auditlog
           (
                operation varchar(100),
                id int,
                productname varchar(100),
                catagoryid int,
               subcatagoryid int,
               operationdate timestamp without time zone
            )

    step2:  创建触发器相关的存储过程

    CREATE FUNCTION public.auditinsertfunlog()
        RETURNS trigger
        LANGUAGE 'plpgsql'
        COST 100
        VOLATILE NOT LEAKPROOF
        ROWS 0
    AS $BODY$

    begin
     insert into auditlog (operation,id,productname,catagoryid,subcatagoryid,operationdate)
        values('insert',new.id,new."productName",new."catagoryID",new."subcatagoryID",current_timestamp);
        return new;
    end;

    $BODY$;

    ALTER FUNCTION public.auditinsertfunlog()
        OWNER TO postgres;

    step3: 创建触发器

        CREATE TRIGGER products_insert_trigger
        AFTER INSERT ON public."Products"
        FOR EACH ROW EXECUTE PROCEDURE public.auditinsertfunlog();

      

  • 相关阅读:
    【Spark学习】Apache Spark安全机制
    【Spark学习】Apache Spark调优
    【Hadoop学习】Apache Hadoop项目简介
    【Zookeeper学习】Apache Zookeeper项目简介
    【Hadoop学习】Apache HBase项目简介
    【HBase学习】Apache HBase 参考手册 中文版
    【Spark学习】Apache Spark项目简介
    【Hadoop学习】CDH5.2安装部署
    【Zookeeper学习】Zookeeper-3.4.6安装部署
    【Spark学习】Spark 1.1.0 with CDH5.2 安装部署
  • 原文地址:https://www.cnblogs.com/yuzg/p/9081477.html
Copyright © 2020-2023  润新知