我有两个表emp
和copy_emp
相同的结构和相同的数据。我想如果发生的任何变化emp
都应该反映在copy_emp
. 因此,我创建了一个触发器,我在下面给出。
create or replace trigger t
after
insert or
update of empno or
delete
on emp
for each row
begin
case
when inserting then
insert into copy_emp(empno,ename,sal) values (:NEW.empno,:NEW.ename,:NEW.sal);
when updating then
if updating('empno') then
update copy_emp set copy_emp.empno=:new.empno where copy_emp.empno=:old.empno;
elsif updating('ename') then
update copy_emp set copy_emp.ename=:new.ename where copy_emp.ename=:old.ename;
elsif updating('sal') then
update copy_emp set copy_emp.sal=:new.sal where copy_emp.sal=:old.sal;
end if;
when deleting then
delete from copy_emp where empno = :old.empno;
end case;
end;
触发器的创建没有任何错误,并且插入和删除工作正常。问题在于更新。当我更新表中empno
的列时emp
,它也会在copy_emp
表中更新。但是当我更新ename
或sal
列时,它只会在emp
表中更新,而不是在copy_emp
表中。请帮忙。