powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Включение/отключение триггера и транзакции
10 сообщений из 10, страница 1 из 1
Включение/отключение триггера и транзакции
    #38934779
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую. Хотя я это уже и проверил, но на всякий случай уточню. Как я понимаю, команды ALTER TRIGGER <блабла> INACTIVE/ACTIVE запускаются с учётом уровня изолированности той транзакции, внутри которой они запущены? Т.е. если я сделаю
1. Начну транзакцию c уровнем Repeatable Read
2. Отключу триггер
3. ...
4. Включу триггер
5. Закончу транзакцию

То для других транзакций, которые исполняются в это же время с тем же уровнем изоляции, отключение триггера не будет "заметно" и для них он будет срабатывать как и положено?
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934791
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

неправильно думаешь. Уровень изолированности тут не причём. Лучше вообще не применять ALTER TRIGGER INACTIVE/ACTIVE за исключением случаев заливки данных в монопольном режиме. Обходят триггеры в основном так

в самом начале тела триггера ставится

Код: sql
1.
2.
3.
IF (CURRENT_USER = 'SPECIAL_USER') THEN
  EXIT;
/* оставшееся тело триггер */
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934801
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так проверка показала, что ALTER TRIGGER INACTIVE/ACTIVE вполне себе подчиняется транзакциям. Или я что-то упустил? Почему лучше так не делать?
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934810
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenИли я что-то упустил?
Угу. Разнообразие архитектур и параметров транзакций. Ну и DFW не в последнюю очередь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934818
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее. Чем мне грозит отключение/включение триггера в транзакции?
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934825
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

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

Вообще идея хреновая, потому что отличить одну транзакцию от другой на сервере можно разве что по ее принадлежности к какому-либо юзеру (номер транзакции ни о чем не говорит кроме номера). Следовательно, условный код должен на юзера ориентироваться.
А если у тебя для одного юзера надо триггеры то включать то выключать, то это совсем капец.
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934837
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

ага упустил. В зависимости от архитектуры сервера кэш метаданных ведёт себя по разному. В классике все уже подключенные коннекты не увидят твоего отключения триггера, а вновь подключившиеся увидят.
На счёт супера не знаю точно, но скорее всего там вообще все коннекты будут видеть твоё отключение триггера.
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38934841
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отключать триггер надо только для одного юзера - репликатора. В общем, спасибо за советы. Сделаю условие в самом триггере.
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38937331
Romanzek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

В качестве флага для проверки в триггере можно использовать транзакционную переменную. Смотри rdb$set_context, rdb$get_context.
Очень удобно как раз для таких задач.
...
Рейтинг: 0 / 0
Включение/отключение триггера и транзакции
    #38937553
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Romanzek, полезная штука, спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Включение/отключение триггера и транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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