只有在对表有任何更新时,才需要使用当前时间戳填充审计列。这是触发器。触发器工作正常
create or replace TRIGGER test.Audit_Trigger
BEFORE UPDATE ON test.TEST_TABLE
FOR EACH ROW
BEGIN
:NEW.column_dtm := current_timestamp;
END;
除了为每个表添加相同的触发器(大约1000个表意味着1000个触发器)而只更改表名,还有其他更好的方法来完成此任务吗?
答案 0 :(得分:1)
如果您可以编写模式级触发器来执行此操作会很好,但遗憾的是Oracle仅支持DDL的模式级触发器,而不支持DML。
您可以使用动态SQL轻松地在每个表上生成触发器,但假设您的数据库版本相当近(我认为9i或更晚),更好的选择可能是与您的DBA讨论如何为表启用细粒度审计更新。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm