执行/调用触发器两种情况
1---尝试操作之前(在检查约束并尝试INSERT,UPDATE或DELETE之前)
2---在操作完成后(在检查约束并且INSERT,UPDATE或DELETE完成后)
注意:当与相关联的表被删除时,触发器被自动删除
CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name
ON table_name
[
-- Trigger logic goes here....
];
当表发生特定事件(即INSERT,UPDATE和DELETE)时,它被激活
event_name可以是INSERT,UPDATE,DELETE和TRUNCATE
演示, 每个记录插入到COMPANY表中进行审核(审计), 创建一个名为AUDIT的新表,只要在COMPANY表中有一个新记录的条目,就会插入日志消息.
create table efu.audit(
empID int not null,
entryDate text not null
);
首先创建一个名为auditlogfunc()的函数/过程
create or replace function efu.auditLogFun()
returns trigger as $example_table$
begin
insert into audit(empID,entryDate)values(new.ID,current_timestamp);
return new;
end;
$example_table$ language plpgsql;
在COMPANY表上创建一个触发器
create trigger example_trigger after insert on company
for each row execute procedure auditLogFun();
测试,
向COMPANY表中插入一些数据记录,以验证触发器执行情况
INSERT INTO efu.COMPANY VALUES(10, '小米', 8, '北京市', 9999);
INSERT INTO efu.COMPANY VALUES(20, '京东', 6, '广州市', 8999);