今天学习触发器
创建原表和触发表:
创建insert触发器函数 tri_insert_func():
创建insert触发器:
验证:
创建update触发器函数 tri_update_func()
创建update触发器:
执行update触发:
创建delete触发函数:
创建delete触发器:
验证:
触发器改名,查看:
禁用触发器,禁用后看有没有生效:
禁用所有触发器:
删除触发器:
开始做作业:
1.创建源表和触发表,在源表上创建insert触发器,创建操作触发表的触发器函数
create table t1(id int, name varchar(20));
create table t2(id int, name varchar(20));
create or replace function my_insert() returns trigger as
$$
declare
begin
insert into t2 values(NEW.id, NEW.name);
return NEW;
end
$$ language plpgsql;
create trigger my_insert_trigger
before insert on t1
for each row
execute procedure my_insert() ;
2.在源表上执行insert操作,查看触发操作是否生效;禁用触发器后,再次查看触发操作是否生效
insert into t1 values(1 ,'zhang');
insert into t1 values(2,'hui');
select * from t1;
select * from t2;
alter table t1 disable trigger my_insert_trigger;
insert into t1 values(1 ,'li');
insert into t2 values(2,'bai');
select * from t1;
select * from t2;
可见并没有引起触发器。
3.使用系统表PG_TRIGGER和\dS+查看触发器
select *from pg_trigger;
\dS+ t1
4.重命名触发器
alter trigger my_insert_trigger on t1 rename to my_insert_trigger2;
select * from pg_trigger;
5.删除触发器
drop trigger my_insert_trigger2 on t1;