zoukankan      html  css  js  c++  java
  • 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();

      

  • 相关阅读:
    (2.3)备份与还原--事务的运行模式与处理机制
    (2.2)备份与还原--备份类型与恢复模式、备份介质
    (2.1)备份与还原--sql server文件的概念及操作
    (1.3.3)权限控制
    (1.3.2)登录验证(加密连接与登录验证)
    (1.3.1)连接安全(连接实例与网络协议及TDS端点)
    static class
    cnblog
    microsoft
    C# socket android
  • 原文地址:https://www.cnblogs.com/yuzg/p/9081477.html
Copyright © 2011-2022 走看看