如何知道触发器的 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_triggers
或 user_triggers
中的 fire_once
和 apply_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;
有没有办法知道触发器的 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_triggers
或 user_triggers
中的 fire_once
和 apply_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;