-设置当员工表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;


相关推荐