创建触发器以更新插入或更新的记录上的时间戳?

时间:2012-12-13 20:27:18

标签: plsql

我正在尝试创建一个Oracle触发器,它会在某个表的每个插入或更新记录上更新entry_stamp列(type = DATE)。这是我的剧本:

CREATE OR REPLACE TRIGGER mytable_entry_stamp 
AFTER INSERT OR UPDATE ON mytable FOR EACH ROW
BEGIN :NEW.entry_stamp := SYSDATE; END;

我收到此错误:

  

ORA-04084:无法更改此触发类型的新值

1 个答案:

答案 0 :(得分:2)

来自Oracle/PLSQL: AFTER UPDATE Trigger

  • 您无法更新:新值。
  • 您无法更新:OLD值。

与MSSQL不同,Oracle似乎无法更新AFTER触发器内的记录。因此它保留用于记录/审计目的,即可以在另一个表中插入或更新记录。将此触发器转换为BEFORE之后,它完美无缺。