【发布时间】:2018-02-19 17:45:49
【问题描述】:
我在 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 emp 表中的状态更改为完成时,我必须创建一个触发器以在 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 方面没有太多经验。有人可以帮忙吗?
【问题讨论】:
-
更新前而不是更新后尝试
-
你已经在伪列 :old.empid, :old.name 和 :new.estatus 中有值,不需要从 schem1.emp 表中选择任何内容。该查询是错误的 - 如果它有效,它将为 schem1.emp 表中的每一行将相同的数据插入到表 emp_final 中。
-
它没有被插入到 emp_final 表中
-
如果您认为触发器未按预期工作,请添加一些日志记录并检查会发生什么。您确定将状态更改为“完成”吗?
标签: sql oracle triggers mutating-table