postgresql 觸發器


一、創建事件觸發器

1、ddl_command_start - 一個DDL開始執行前被觸發;

2、ddl_command_end - 一個DLL 執行完成后被觸發;

3、sql_drop -- 刪除一個數據庫對象前被觸發;

create or replace function abort_any_command()

returns event_trigger

language plpgsql

as $$

begin

raise exception 'command % is disabled',tg_tag;

end;

$$;

 

create event trigger abort_ddl on DDL_command_start execute procedure abort_any_command();

 

二、語句級觸發器

create or replace function log_student_trigger()

returns trigger as $$

begin

insert into log_student values(now(),user,tg_op);

return null;

end;

$$

language plpgsql;

create trigger log_student_trigger

after insert or delete or update on student

for statement execute procedure log_student_trigger;

--此觸發器表示,如果對student表進行增、刪、改之后將操作日志插入log_student_student表,如果將after替換成before則表示在操作進行之前出發數據插入操作。

注意:語句級的觸發器應該總是返回null,並且必須顯示地在觸發器函數中寫上“return null”,如果沒寫,將會報錯。

 

三、修改事件觸發器

1、禁用事件觸發器 alter event trigger name disable;

2、啟用事件觸發器 alter event trigger name enable;

3、指定事件觸發器所屬 alter event trigger name owner to new owner;

4、重命名觸發器 alter event trigger name rename to new_name;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM