Oracle数据库中的触发器

触发器

在执行某个事件时,触发定义的某个操作

触发器是自动调用的,不需认为调用,也不能调用

语法

create or replace trigger 触发器名称
  before|after 增删改操作
  on 作用的表名 
  for each row
declare
begin
  触发的操作
end copytri;

案例

  1. 通过触发器实现表插入数据前自动调用序列

创建一个序列

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);

结果

  1. 实时备份数据表

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);

结果

  1. 同步删除数据

创建触发器

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;

结果

经验分享 程序员 微信小程序 职场和发展