如何知道何时禁用/启用触发器?

时间:2019-09-11 14:05:50

标签: oracle database-trigger

有一个在数据库上禁用的触发器。我有什么办法可以从oracle(也许是元数据/数据字典表)中禁用它的时候知道吗?

3 个答案:

答案 0 :(得分:2)

如果已启用ALTER TRIGGER或ALTER TABLE的审核(默认情况下未启用),则可以通过Oracle AUDIT进行此操作。

否则,您也许可以从USER_OBJECTS.LAST_DDL_TIME推断出触发器,但是很明显,除了启用或禁用之外,其他DDL还设置了时间。

答案 1 :(得分:1)

使用此查询:

SELECT OWNER, TRIGGER_NAME, STATUS
FROM ALL_TRIGGERS
WHERE STATUS = 'DISABLED';

您也可以使用

SELECT t.OWNER, TRIGGER_NAME, t.STATUS, LAST_DDL_TIME
FROM ALL_OBJECTS obj
    JOIN ALL_TRIGGERS t ON t.owner = obj.owner AND TRIGGER_NAME = OBJECT_NAME;

LAST_DDL_TIME显示了最后一个DDL,它可能是禁用触发器时的情况。但是,可以进行其他任何修改。

答案 2 :(得分:1)

使用以下查询:

SELECT object_name, last_ddl_time FROM dba_objects WHERE object_name IN ( SELECT object_name FROM dba_triggers WHERE status = 'DISABLED' ) ORDER BY 1;