Можно ли в ХП так делать?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
MEV
Сообщения: 4
Зарегистрирован: 24 апр 2006, 10:45

Можно ли в ХП так делать?

Сообщение MEV » 04 авг 2006, 15:35

begin
execute statement 'alter trigger triggername inactive';
.................
.................
.................
.................
execute statement 'alter trigger triggername active';
end;

Сабж :?:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 авг 2006, 15:39

НЕТ. теоретически можно, но здравый смысл в данной конструкции отсутствует напрочь.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 04 авг 2006, 15:45

Практический смысл вроде бы отсутствует тоже потому что лично я не поручусь что триггер отключается сразу а не по коммиту. Сейчас придет Дмитрий и скажет наверняка.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 04 авг 2006, 15:57

по коммиту, конечно

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 авг 2006, 15:59

Даже если допустить, что нечто возможно будет реализовать схожим образом, это будут не грабли даже, а Грабли.
Когда в таблице что-то не изменится по триггеру, и забывший о них ты или другой разработчик, о них не подозревающий, будет биться головой о стену силясь понять "ну как же так?! всё включено, а изменений нет!"
Был тут один... Он тремя транзакциями похожее делал. Да, триггер отключался, а после выполнения включался. Но когда возникла необходимость что-то отладить, два дня (!) сам же разбирался, "почему!?".

MEV
Сообщения: 4
Зарегистрирован: 24 апр 2006, 10:45

Сообщение MEV » 04 авг 2006, 16:12

Эта процедура будет вызываться очень редко, в очень специфических случаях и практический смысл в ней всё таки есть. Необходима процедура которая редактирует таблицу в "ручном" режиме. Т.е можно конечно с клиента отключить триггер, запустить ХП и потом активировать его обратно, но это грабли ещё бОльшие. Ну так вопрос собственно в этом и состоит, в одной транзакции это замутить невоможно, т.е. в одной ХП тем более? Или всё же есть варианты.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 04 авг 2006, 16:41

Аж два. Датабазе шутдаун перед скользкими вещами и выполнение их в монополе. И программно-отключаемый через if и служебное поле или if и спициятельный юзер код триггеров.

Ответить