我在schema1中有emp表,在schema2中有emp_fianl。
emp
empid ename estatus
1 abc incomplete
2 xyz complete
3 ifg incomplete
4 mno incomplete
Emp_final
empid ename estatus
2 xyz complete
当schema1 \ temp表中的estatus更改为完成时,我必须创建一个触发器以在Schema2 emp_final表中插入数据。 我在下面写了相同的触发器:
Create or replace trigger tri_emp_final
After update on emp
BEGIN
IF :new.estatus='complete' then
Insert into emp_final
(select :old.empid,:old.ename,:new.estatus from schem1.emp);
END IF;
END;
/
我收到上述代码的变异错误消息。当我尝试更新emp表中的状态时。我是一名java开发人员,在Oracle,SQL方面经验不足。有人可以帮忙吗?
答案 0 :(得分:0)
使用
Create or replace trigger tri_emp_final
After update on emp for each row
BEGIN
IF :new.estatus='complete' then
Insert into emp_final ( empid , ename , estatus)
Values
(:old.empid,:old.ename,:new.estatus );
END IF;
END;
/
您可以找到有效的演示here
答案 1 :(得分:0)
第一件事:我们要使用:old和:new,你的触发器必须是每个行。所以你需要改变:before update on emp for each row.
第二:像GoranStefanović写的那样,你不要选择插入,只需使用:旧值。