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;

 

posted @ 2016-03-10 22:33  xiaofoyuan  阅读(6148)  评论(0编辑  收藏  举报