2011-11-02 16 views

回答

2

您可以創建通過使用Oracle系統表刪除觸發器,這樣的腳本:

select 'drop trigger ' || owner || '.' || trigger_name || ';' from all_triggers 

注意,有3次含觸發器:

  • all_triggers =所有觸發器你有權知道 (不管它們屬於哪個模式)
  • user_triggers =屬於您自己模式的觸發器
  • DBA_TRIGGERS對DBA的
3

首先谷歌=命中爲搜索查詢:Drop all triggers - Oracle

BEGIN 
    FOR i in (select trigger_name,owner 
       from dba_triggers 
      where trigger_name like '%_BI%' and owner = 'myTesting') LOOP 
    EXECUTE IMMEDIATE 'DROP TRIGGER '||i.owner||'.'||i.trigger_name; 
    END LOOP; 
END; 

如果你真的想放棄所有的觸發器在數據庫中,

BEGIN 
    FOR i in (select trigger_name,owner 
       from dba_triggers) LOOP 
    EXECUTE IMMEDIATE 'DROP TRIGGER '||i.owner||'.'||i.trigger_name; 
    END LOOP; 
END; 
+0

第二個塊是一個非常糟糕的主意,因爲它會嘗試刪除'SYS'和'SYSTEM'觸發器以及任何用戶創建的觸發器。由於缺少權限,塊可能會失敗,否則數據庫將保持斷開狀態。 – Allan

+0

嘿,他說所有的觸發器...... :-)然而,沒有其他的where子句無法修復。 '那裏所有者不是(「SYS」,「SYSTEM」)' – saritonin

+0

現在這個頁面是最高命中爲「丟棄所有觸發甲骨文:-) – trask

7

這將生成命令如何刪除所有觸發器在當前模式:

select 'drop trigger ' || trigger_name || ';' stmt from user_triggers; 
+0

這只是幫我! – cdaiga

相關問題