Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 post_event вне зависимости от транзакции  [new]
evgen29
Member

Откуда:
Сообщений: 125
Здравствуйте! Есть клиент, написанный на delphi другим человеком. Доступа у меня к исправлению исходников нет. Хочу в триггере after update делать post_event, а после него exception, чтобы не было апдейта. Все эксепшены программы-клиента пишутся в лог, а эвенты выводятся в диалоговых окошках. Изменить это я не могу - не моя кухня. Мне надо не просто вывести в лог exception из триггера,а послать post_event вне зависимости будет транзакция завершена через commit или rollback. post_event работает только после того, как сделан commit.
7 окт 19, 22:21    [21988906]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
ёёёёё
Member

Откуда:
Сообщений: 1411
evgen29,

https://www.google.com/search?q=firebird transaction anonimus - ?
7 окт 19, 22:55    [21988926]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
ёёёёё
Member

Откуда:
Сообщений: 1411
Ой.

https://www.google.com/search?q=firebird transaction anonymous конечно же
7 окт 19, 22:56    [21988931]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48674

autonomous тогда уж, а лучше не выпендриваться с гуглем, а сразу посылать в LangRef.

Posted via ActualForum NNTP Server 1.5

8 окт 19, 00:22    [21988966]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
ёёёёё
Member

Откуда:
Сообщений: 1411
Dimitry Sibiryakov,

да! Прорушка на старушку! В третий раз не стал править!
8 окт 19, 00:35    [21988973]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28333
evgen29,

http://www.ibase.ru/files/firebird/langref25rus/index.html#d0e24068
8 окт 19, 02:03    [21988986]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
evgen29
Member

Откуда:
Сообщений: 125
Тут есть ещё одна проблемка - firebird 2.1.3 и переход на 2.5 в ближайшее время не планируется.
про автономные транзакции в 2.5 в курсе.
Попробую через udf чтоли
8 окт 19, 09:52    [21989122]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30655

08.10.2019 9:52, evgen29 пишет:
> Попробую через udf чтоли

под этот велосипед соломку подкладывать бесполезно...

Posted via ActualForum NNTP Server 1.5

8 окт 19, 11:25    [21989205]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8409
Уж лучше апдетебл вью замутить на месте искомой таблички, которой требуется обломать апдейт, зло куда меньшее. Пусть клиент думает, что проапдейтил, все закоммитит, а запись чутка хитрее подрулить триггерами.

Только все едино костыли.
8 окт 19, 12:59    [21989350]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Василий 2
Member

Откуда:
Сообщений: 809
В TRIGGER BEFORE INSERT: Rdb$Set_Context('USER_SESSION', 'Event', 'some event');
В TRIGGER TRANSACTION COMMIT/TRANSACTION ROLLBACK проверять Rdb$Get_Context('USER_SESSION', 'Event') и делать PostEvent ?

*Не проверено.
8 окт 19, 15:10    [21989521]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
ёёёёё
Member

Откуда:
Сообщений: 1411
Василий 2,

fb 2.1 же ж.
8 окт 19, 15:57    [21989580]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28333
Василий 2
В TRIGGER TRANSACTION COMMIT/TRANSACTION ROLLBACK проверять

транзакционные триггеры крайне не рекомендуется использовать для любых целей, кроме отладки.
Потому что в результате будут тормоза на любой старт-коммит-роллбэк транзакции.
В триггере на роллбэк опять же пост-евент работать не будет, потому что эвенты отсылаются только при коммите.

Вот тут - про 2.5, про автономные транзакции, и триггеры на транзакции.
https:// youtu.be/n35L7gdw51Q?t=1736
8 окт 19, 16:05    [21989588]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Василий 2
Member

Откуда:
Сообщений: 809
kdv
транзакционные триггеры крайне не рекомендуется использовать для любых целей, кроме отладки.
Потому что в результате будут тормоза на любой старт-коммит-роллбэк транзакции.
В триггере на роллбэк опять же пост-евент работать не будет, потому что эвенты отсылаются только при коммите.

Вот тут - про 2.5, про автономные транзакции, и триггеры на транзакции.
https:// youtu.be/n35L7gdw51Q?t=1736

По описанию ТС у него в любом случае костыльный костыль.
А вообще действительно подменить вьюху может сработать, если только прога не подтягивает метаданные таблицы (ключи или индексы, например).
А цель просто отменить апдейт? TRIGGER AFTER UPDATE, где (псевдокод) NEW.* := OLD.* не поможет?
8 окт 19, 18:04    [21989743]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30655

08.10.2019 18:04, Василий 2 пишет:
> TRIGGER AFTER UPDATE, где (псевдокод) NEW.* := OLD.* не поможет?

запрещено.
ибо.

Posted via ActualForum NNTP Server 1.5

8 окт 19, 18:06    [21989747]     Ответить | Цитировать Сообщить модератору
 Re: post_event вне зависимости от транзакции  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28333
Василий 2,

в коде приложений, триггерах или процедурах,
.* = 5 ударов розгами (или линейкой) по пальцам, независимо от места указания.

В интерактивных запросах, "прямщас" - можно, не возбраняется.
8 окт 19, 20:03    [21989834]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить