何よりもまず、私はこの投稿をスタックで見ました。すべてのトリガーを一覧表示する方法が記載されています。私が求めているのは、すべてのトリガーを無効にする(削除/削除しない)スクリプトです。
質問する
2189 次
1 に答える
2
興味深い質問です。残念ながら、これをローカルでテストすることはできませんが、このようなものが機能する可能性があります。基本的に、すべてのトリガーをループするように宣言し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;
そして、これがSQLFiddleです。Fiddleでは完全には機能しませんが、これはFiddleによるものであり、コードによるものではないと思います。
幸運を。
于 2013-01-28T03:37:35.313 に答える