--建立一个触发器, 当职工表 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;