如果表中的特定列收到更新,我试图密切注意,如果是,则将该更改插入审核表。我已经能够编写此触发器来执行此操作,如果任何列更改,或者我的列更改为特定值但由于某种原因我尝试比较old.column_x!= new.column_x时它没有记录更新。我尝试了几种代码,这是我尝试过的最新版本。
CREATE OR REPLACE TRIGGER audit_table
AFTER UPDATE ON table_1
FOR EACH ROW
WHEN (new.column_x != old.column_x)
BEGIN
INSERT INTO audit_table (
column_1,
old_column_x,
new_column_x,
auditdtm
)
VALUES (
:old.column_1,
:old.column_x,
:new.column_x,
SYSDATE);
END
答案 0 :(得分:0)
谢谢Gurwinder Singh,我想这就是你告诉我试试的。考虑到我的数据总是处于/处于NULL状态,这是可行的,尽管可能有一种更漂亮的方式来编写它。
CREATE OR REPLACE TRIGGER audit_table
AFTER UPDATE ON table_1
FOR EACH ROW
WHEN ((new.column_x IS NULL AND old.column_x IS NOT NULL) OR (new.column_x IS NOT NULL AND old.column_x IS NULL))
BEGIN
INSERT INTO audit_table (
column_1,
old_column_x,
new_column_x,
auditdtm
)
VALUES (
:old.column_1,
:old.column_x,
:new.column_x,
SYSDATE);
END