它我有一个名为per的表。在每个表中,我有一个名为“fl1”的字段和另一个名为“fl2”的字段。更新记录时,我想检查“fl1”的值是否已更改。如果值已更改,请使用“fl1”中的新值更新“fl2”列。
我想出了这个触发器
CREATE OR REPLACE TRIGGER Flag
AFTER INSERT OR UPDATE on per
REFERENCING NEW AS NEW OLD AS OLD
BEGIN
If :New.fl1 != :Old.fl1 Then
:New.fl2:= :new.fl1;
End If;
END;
当我运行它时,我得到一个“ORA-04082:表级触发器中不允许新或旧引用”
我正在考虑的另一个选项(不确定它是否有效)是简单地用“fl1”的值更新“fl2”的值,而不管“fl1”的值是否已经改变。
更新
添加了“每行”并将“插入或更新后”更改为“插入或更新前”。它正在工作。
CREATE OR REPLACE TRIGGER Flag
BEFORE INSERT OR UPDATE on per
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
If :New.fl1 != :Old.fl1 Then
:New.fl2:= :new.fl1;
End If;
END;