emp
同じ構造とcopy_emp
同じデータを持つ2つのテーブルがあります。で発生した変更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
。助けてください。