【发布时间】:2013-01-28 02:36:46
【问题描述】:
首先,我在堆栈中看到了这个post。它说如何列出所有触发器,我要的是禁用(而不是删除/删除)所有触发器的脚本。
【问题讨论】:
首先,我在堆栈中看到了这个post。它说如何列出所有触发器,我要的是禁用(而不是删除/删除)所有触发器的脚本。
【问题讨论】:
有趣的问题。不幸的是,我无法在本地对此进行测试,但这样的事情可能会奏效。基本上,声明一个CURSOR 以循环遍历所有触发器(出于我的目的,我正在使用几个 TEST 触发器进行测试)。然后使用EXECUTE IMMEDIATE执行动态sql。
DECLARE
CURSOR cur_trigger IS
SELECT 'ALTER TRIGGER ' ||
table_owner ||
'.' ||
trigger_name ||
' DISABLE' SQLStatement
FROM all_triggers
WHERE trigger_name like '%TEST%';
sqlText cur_trigger%ROWTYPE;
BEGIN
OPEN cur_trigger;
LOOP
FETCH cur_trigger INTO sqlText;
EXIT WHEN cur_trigger%NOTFOUND;
EXECUTE IMMEDIATE sqlText.SQLStatement;
END LOOP;
CLOSE cur_trigger;
END;
这里是SQL Fiddle。它在 Fiddle 中不能完全工作,但我相信这是因为 Fiddle 而不是代码。
祝你好运。
【讨论】: