|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые форумчане. Прошу Вашей помощи. Имеется сервер firebird полторашка и IBExpert на сервере и клиентские приложения, которые работают уже более 10 лет. Возникла необходимость в написании доп. ПО. которое ловит событие добавления строки в таблицу и с этой инфой делает определенные действия. Клиент работает на C#. В IBexpert создается триггер, вот его код: Код: sql 1. 2. 3. 4. 5. 6.
Суть триггера проста до безобразия, после добавления строки все подписанные клиенты получают уведомление. На всякий случай кусок кода C#, который подписывается на это событие Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Собственно в чем проблема: 1. Кода клиентское приложение вставляет строку в таблицу событие не срабатывает 2. Когда я добавляю строку в эту таблицу с помощью IBExpert, и делаю подтверждение транзакции, клиентское приложение, код которого описан выше прекрасно перехватывает событие и выводит информацию об этом на консоль. Два дня маюсь, весь гугл прогуглил и ничего не нашел. Может кто поможет, с меня пиво ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:43 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Hello, Kadet635! You wrote on 17 октября 2016 г. 14:49:08: Kadet635> после добавления строки все подписанные клиенты получают уведомление.нет. они его получат при коммите. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:49 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, простите, может я чего то не понимаю, но разве без коммита можно сохранить данные в таблице? Может тогда кто то подскажет как решить проблему? Приложение которое добавляет строки в эту табл. написано давно и исходников у меня нет ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:55 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
понятия не имею когда твой шарп соизволит коммитить данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:59 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, я тебя услышал ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:00 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Есть у кого то еще мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:00 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635, как по твоему событие может быть поймано, если подключение для ловли этого события уже закрыто? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:04 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635, какие еще мысли. события рассылаются по коммиту той транзакции, где эти события произошли. аминь. До коммита никакие события из этой транзакции никому отправлены не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:05 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Симонов Денис,Почему ты решил, что оно закрыто???? Код: c# 1.
этот оператор блокирует закрытие подключения ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:10 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Вопрос к знатокам, если делать триггер before, а не after транзакция тоже нужна? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:26 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Hello, Kadet635! You wrote on 17 октября 2016 г. 15:28:57: Kadet635> Вопрос к знатокам, если делать триггер before, а не after транзакция тоже нужна? я тыбе адын умный весч скажу, толька ты ни абыжайса (с) вне транзакции триггеры не работают ни в одной СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:30 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635Вопрос к знатокам, если делать триггер before, а не after транзакция тоже нужна? не то чтобы нужна, но без нее просто невозможно физически ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:30 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635Кода клиентское приложение вставляет строку в таблицу событие не срабатывает значит, приложение делает коммит где-то после, например "после вставки всех нужных строк в таблицу". Events, собственно, индицируют что действие произошло и сохранено по commit. Если транзакция завершилась по rollback, никакие события из этой транзакции никому не отправляются. А тип триггера, как уже сказали, никакого значения не имеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:43 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635, берёшь трейс и смотришь когда твоё приложение стартует и завершает транзакцию. Подозреваю, что автокоммит в ADO.NET сделан через COMMIT RETAIN, что может приводить к таким приколам. Кстати в твоём примере для воспроизведения что-то не видно метода который вставляет строку в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:44 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Симонов Денис, Все верно этой строки там нет. Это приложение только хочет отловить событие. А приложение которое занимается добавлением данных в эту таблицу скомпилировано в exe и исходников у меня нет, я не знаю логики его работы, но оно добавляет строки в эту таблицу и моя задача получать оповещение всякий раз, когда оно это делает ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:49 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635, трейсом смотри что это приложение делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:53 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Симонов Денис, ты имеешь в виду снифером смотреть что отправляет приложение? или я чего то не понимаю? направь на путь истинный) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:00 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635> Есть у кого то еще мысли? Есть. 1. Какая версия FB? 2. Для чего сабдж нужен. Если для чего-то полезного - ну есть способ, я как-то его уже подсказывал, но не всем его можно вручить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:06 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:08 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, версия 1,5. Для того чтоб поймать событие добавления строки в таблицу посещения, затем смотрю добавленную строку, вытаскиваю номер карты и средствами SerialPort записываю ключ в контроллеры СКУДа. Можно конечно постоянно опрашивать таблицу, но это идиотизм ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:13 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
добавь в таблицу поле. навесь на него генератор (в триггере). запоминай "предыдущее" значение генератора и тащи к себе всё что "новее". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:23 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, Эээ. Может, не надо? Пусть уж лучше сразу номера вставленных карт в новую таблицу - журнал пишет. И оттуда обработанные грохает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:35 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
Hello, Wildsery! You wrote on 17 октября 2016 г. 16:40:03: Wildsery> Пусть уж лучше сразу номера вставленных карт в новую таблицу - журнал пишет. > И оттуда обработанные грохает.не знаю как пацаны, но я лично не возражаю... (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:40 |
|
Снова триггеры в firebird
|
|||
---|---|---|---|
#18+
kadet635> записываю ключ в контроллеры СКУДа. Хорошо, что я уточнил. Вот в таком случае нельзя гранату в руки давать. :) > Можно конечно постоянно опрашивать таблицу, но это идиотизм Ну смотря что и как реализовывать и какая периодичность нужна. Про генераторы уже подсказали, про отдельную таблицу-журнал тоже сказали (грохать из неё необязательно, кстати). Есть ещё внешние таблицы и ещё пара вариантов. Выбирай на любой вкус. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 16:43 |
|
|
start [/forum/topic.php?fid=40&msg=39328383&tid=1561911]: |
0ms |
get settings: |
6ms |
get forum list: |
27ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 176ms |
0 / 0 |