powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как отключить триггер с помощью SQL ? Help!
15 сообщений из 15, страница 1 из 1
Как отключить триггер с помощью SQL ? Help!
    #35468054
esr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне приходится перекачивать данные в некую базу, которая имеет сильно много неправильных данных, и к тому же сильно зажата проверками и триггерами. Иногда надо поправить коды сразу в нескольких таблицах. Для этого я вручную через PL\SQL отключаю триггер, потом вношу изменения в таблицы, и затем снова включаю. А как сделать отключение и включение с помощью кода SQL ?
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468064
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
alter trigger schema.trigger_name disable
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468105
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
esrМне приходится перекачивать данные в некую базу, которая имеет сильно много неправильных данных, и к тому же сильно зажата проверками и триггерами. Иногда надо поправить коды сразу в нескольких таблицах. Для этого я вручную через PL\SQL отключаю триггер, потом вношу изменения в таблицы, и затем снова включаю. А как сделать отключение и включение с помощью кода SQL ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin
   execute immediate 'alter trigger schema.trigger_name disable';
   update ..... ;
   commit;
   execute immediate 'alter trigger schema.trigger_name enable';
EXCEPTION
WHEN OTHERS THEN
   rollback;
   execute immediate 'alter trigger schema.trigger_name enable';
   raise;
end;
Кстати, а как Вы - "вручную через PL\SQL отключаю триггер"?
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468216
esr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pravednik
Код: plaintext
alter trigger schema.trigger_name disable


Спасибо! А как отключить Foreign Key ?

Извиняюся за свою неграмотность (Oraclом приходится сейчас заниматься по необходимости...)
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468221
esr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx esrМне приходится перекачивать данные в некую базу, которая имеет сильно много неправильных данных, и к тому же сильно зажата проверками и триггерами. Иногда надо поправить коды сразу в нескольких таблицах. Для этого я вручную через PL\SQL отключаю триггер, потом вношу изменения в таблицы, и затем снова включаю. А как сделать отключение и включение с помощью кода SQL ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin
   execute immediate 'alter trigger schema.trigger_name disable';
   update ..... ;
   commit;
   execute immediate 'alter trigger schema.trigger_name enable';
EXCEPTION
WHEN OTHERS THEN
   rollback;
   execute immediate 'alter trigger schema.trigger_name enable';
   raise;
end;
Кстати, а как Вы - "вручную через PL\SQL отключаю триггер"?

Ой, не совсем правильно выразился! Через PL\SQL Developer. Правой клавишей мышки.
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468271
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
esr pravednik
Код: plaintext
alter trigger schema.trigger_name disable


Спасибо! А как отключить Foreign Key ?

Извиняюся за свою неграмотность (Oraclом приходится сейчас заниматься по необходимости...)
Код: plaintext
alter table <table_name> disable CONSTRAINT <fk_name>;
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468284
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
esrИзвиняюся за свою неграмотность (Oraclом приходится сейчас заниматься по необходимости...)Безо всякого наезда, а Вы уверены, что Вам это действительно надо отключать, раз уж Вы с Ораклом не на ты?
ЗЫ: Просто очень похоже, что Вы пишите какую-то загрузку данных и делаете неправильный вывод...
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468287
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jannny esrИзвиняюся за свою неграмотность (Oraclом приходится сейчас заниматься по необходимости...)Безо всякого наезда, а Вы уверены, что Вам это действительно надо отключать, раз уж Вы с Ораклом не на ты?
ЗЫ: Просто очень похоже, что Вы пишите какую-то загрузку данных и делаете неправильный вывод...
+1
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35468533
esr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jannny esrИзвиняюся за свою неграмотность (Oraclом приходится сейчас заниматься по необходимости...)Безо всякого наезда, а Вы уверены, что Вам это действительно надо отключать, раз уж Вы с Ораклом не на ты?
ЗЫ: Просто очень похоже, что Вы пишите какую-то загрузку данных и делаете неправильный вывод...

Ну да, делаю загрузку данных в очень нехорошо спланированную базу. Спасибо за предостережение, но другого выхода в этой ситуации похоже нету. Мне и самому это в лом...
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35469405
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
esrСпасибо за предостережение, но другого выхода в этой ситуации похоже нету. Мне и самому это в лом...Влом - это совсем другой смысл :) Вы уверены, что отключая констрейнты и триггера, Вы не вредите базе (с которой могут в этот момент работать не только Ваша сессия)?
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #35469584
esr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jannny esrСпасибо за предостережение, но другого выхода в этой ситуации похоже нету. Мне и самому это в лом...Влом - это совсем другой смысл :) Вы уверены, что отключая констрейнты и триггера, Вы не вредите базе (с которой могут в этот момент работать не только Ваша сессия)?

Да, пока база не в работе. Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как отключить триггер с помощью SQL ? Help!
    #39300480
AndDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin
   execute immediate 'alter trigger schema.trigger_name disable';
   update ..... ;
   commit;
   execute immediate 'alter trigger schema.trigger_name enable';
EXCEPTION
WHEN OTHERS THEN
   rollback;
   execute immediate 'alter trigger schema.trigger_name enable';
   raise;
end;

Кстати, а как Вы - "вручную через PL\SQL отключаю триггер"?

Вот такой вариант
Код: plsql
1.
2.
3.
4.
5.
6.
begin
  execute immediate 'alter trigger schema.trigger_name disable';
  update ..... ;
  commit;
  execute immediate 'alter trigger schema.trigger_name enable';
end;


мне выдает
Код: plsql
1.
ORA-04092: cannot COMMIT in a trigger


Любопытно, что та же ошибка появляется и при отсутствии commit внутри begin-end . Правда, выполняю не в "чистом" редакторе, а в некой оболочке, которая, возможно, добавляет что-то свое.
Если добавляю
Код: plsql
1.
2.
declare
  pragma autonomous_transaction;    


то триггер нормально отключается и потом включается, но update не отрабатывает (во всяком случае, данные не изменяются).
Сам триггер не содержит pragma autonomous_transaction .
Не подскажете, что можно сделать, чтоб и триггер отключался на момент update , и сам update отрабатывал?
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #39300494
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndDemНе подскажете, что можно сделать, чтоб и триггер отключался на момент update , и сам update отрабатывал?Этого достигают условностью в теле триггера.
А подход с отключением триггера допустим только при регламентных работах, когда никто другой не может одновременно изменять ту же таблицу.
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #39300511
AndDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Да, Вы правы. Буду искать другое решение. Спасибо!
...
Рейтинг: 0 / 0
Как отключить триггер с помощью SQL ? Help!
    #39300746
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndDemElic,

Да, Вы правы. Буду искать другое решение. Спасибо!

Сталкивался в реале, когда выполнение несколькими пользователями порядка 10000 простых операций одновременно вместо двух-трех минут парализовало нормальную работу БД на несколько часов/дней.
Потому как настоящие гуру умеют в процедурах через динамический SQL включать/выключать триггеры.

См. library cache locks по теме.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как отключить триггер с помощью SQL ? Help!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]