如何知道触发器的 DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY 是否设置为 false?

How to know if DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY was set to false for a Trigger?

有没有办法知道触发器的 DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY 是否设置为 false?

DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY('"S1"','"MY_TRIGGER"',FALSE) ; 

默认情况下 属性 设置为 TRUE,我需要查询 属性 是否设置为 false,因为当我重新创建触发器时我需要再次设置它为假。

您需要查看 all_triggers data dictionary view(或 dba_triggersuser_triggers 中的 fire_onceapply_server_only 列,具体取决于您的权限和您正在查看的特定触发器集)。

Justin 的回答似乎适用于 Oracle 11,但是这些列在我正在使用的 Oracle 10 中不可用。

在 Oracle 10 中,DBMS_DDL.IS_TRIGGER_FIRE_ONCE 函数 returns 触发器标志的值。

DECLARE

    isFiring BOOLEAN := false;
BEGIN
    isFiring := dbms_ddl.IS_TRIGGER_FIRE_ONCE('S1', 'MY_TRIGGER');
    IF isFiring = true THEN
        dbms_output.put_line('TRUE');
    ELSE
        dbms_output.put_line('FALSE');
    END IF;        
END;