Oracle数据库中的触发器
触发器
在执行某个事件时,触发定义的某个操作
触发器是自动调用的,不需认为调用,也不能调用
语法
create or replace trigger 触发器名称 before|after 增删改操作 on 作用的表名 for each row declare begin 触发的操作 end copytri;
案例
- 通过触发器实现表插入数据前自动调用序列
创建一个序列
create sequence S1 minvalue 1 maxvalue 9999999999999999999999999999 start with 1 increment by 1 cache 20;
创建一个触发器
create or replace trigger tri1 before insert on testtab for each row declare begin select s1.nextval into :new.tid from dual; end tri1;
测试
insert into testtab values(null,杨小小山,18);
结果
- 实时备份数据表
testtab:要备份的表,字段:tid,tname,tage copytesttab:备份到此表,字段:cid,cname
创建触发器:
create or replace trigger copytri after insert on testtab for each row declare begin insert into copytesttab(cid,cname) values(:new.tid,:new.tname); end copytri;
测试
insert into testtab values(null,杨小小山山,18);
结果
- 同步删除数据
创建触发器
create or replace trigger deletecopy after delete on testtab for each row declare begin delete from copytesttab where cid=:old.tid; end deletecopy;
测试
delete from testtab where tid=11;
结果