0

何よりもまず、私はこの投稿をスタックで見ました。すべてのトリガーを一覧表示する方法が記載されています。私が求めているのは、すべてのトリガーを無効にする(削除/削除しない)スクリプトです。

4

1 に答える 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 に答える