Oracle审计触发器代码,用于具有不同表名的多个表

时间:2014-11-11 15:37:26

标签: oracle triggers

只有在对表有任何更新时,才需要使用当前时间戳填充审计列。这是触发器。触发器工作正常

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个触发器)而只更改表名,还有其他更好的方法来完成此任务吗?

1 个答案:

答案 0 :(得分:1)

如果您可以编写模式级触发器来执行此操作会很好,但遗憾的是Oracle仅支持DDL的模式级触发器,而不支持DML。

您可以使用动态SQL轻松地在每个表上生成触发器,但假设您的数据库版本相当近(我认为9i或更晚),更好的选择可能是与您的DBA讨论如何为表启用细粒度审计更新。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm