一、創建事件觸發器
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;