SQL触发器错误报告

时间:2015-05-09 01:10:09

标签: sql oracle plsql triggers oracle-sqldeveloper

所以我已经完成了编写一个触发器的任务,该触发器应该在两列之间交换数据 - LAST_NAME和EMAIL在更新了SALARY列的记录中。这就是我想出来的

render "form"

当我尝试执行此操作时:

CREATE OR REPLACE TRIGGER SWAP
  FOR UPDATE OF SALARY ON MY_EMP
  COMPOUND TRIGGER
  AFTER EACH ROW IS
    BEGIN
      UPDATE MY_EMP SET LAST_NAME = EMAIL, EMAIL = LAST_NAME WHERE :OLD.SALARY <> :NEW.SALARY;
    END AFTER EACH ROW;
END SWAP;

我收到错误报告:

UPDATE MY_EMP
SET SALARY = SALARY + 100
WHERE EMPLOYEE_ID = 198;

我在这里做错了什么?任何解决方案?

1 个答案:

答案 0 :(得分:0)

在更新之前进行此操作,而不是修改基础表,修改表的新值。

这将允许您在DML提交之前更新这些。