您的位置 首页 > 娱乐休闲

Oracle触发器的简单例子

--建立一个触发器, 当职工表 emp 表被删除一条记录时,把被删除记录写到职工表删除日志表中去。

--创建历史表

create table myemp_his as select * from myemp where 1=2;

--创建删除触发器

create or replace trigger myemp_delete_trig

after delete

on myemp

for each row

begin

insert into myemp_his

values

(:old.empno,:old.ename,:old.job,:old.mgr,

:old.hiredate,:old.sal,:old.comm,:old.deptno,:old.sal2);

end;

--创建更新触发器,更新myemp表中的数据时,需要保存到myemp_his表中两条数据,更新前的数据和更新后的数据

create or replace trigger myemp_update_trig

after update of sal

on myemp

for each row

begin

--更新前的数据

insert into myemp_his

values

(:old.empno,:old.ename,:old.job,:old.mgr,

:old.hiredate,:old.sal,:old.comm,:old.deptno,:old.sal2,'更新前',sysdate);

--更新后的数据

insert into myemp_his

values

(:new.empno,:new.ename,:new.job,:new.mgr,

:new.hiredate,:new.sal,:new.comm,:new.deptno,:new.sal2,'更新后',sysdate);

end;

--更新myemp表中的deptno时,同时更新dept表中的修改时间

CREATE OR REPLACE TRIGGER myemp_deptno_trig

BEFORE UPDATE

of deptno --of后表示哪些列进行触发

ON myemp

for each row

BEGIN

update dept set mdate = sysdate where deptno = :new.deptno;

END;


责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“Oracle触发器的简单例子”边界阅读