Как сбросить сразу все триггеры внутри данной БД в Oracle? - PullRequest
3 голосов
/ 02 ноября 2011

Как удалить (удалить, удалить) все триггеры в данной БД.

Проблема в том, что приложение требует обновления БД и не запускает триггеры (suport, drop, create) после обновления, обновление приложения завершается неудачей.

Ответы [ 3 ]

9 голосов
/ 02 ноября 2011

Будет сгенерирована команда сброса всех триггеров в текущей схеме:

select 'drop trigger ' || trigger_name || ';' stmt from user_triggers;
3 голосов
/ 02 ноября 2011

Первое попадание Google для поискового запроса: Отбросить все триггеры - 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;  
3 голосов
/ 02 ноября 2011

Вы можете создать скрипт для сброса триггеров, используя системные таблицы Oracle, например:

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

Обратите внимание, что есть 3 вида, содержащие триггеры:

  • all_triggers = все триггеры, о которых вам разрешено знать (независимо от того, к какой схеме они принадлежат)
  • user_triggers = триггеры, принадлежащие вашей собственной схеме
  • dba_triggers = для администраторов баз данных
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...