Database triggers в FB
Добавлено: 12 янв 2009, 13:20
Здравствуйте, уважаемые!
Вопрос следующий - как работают в FB database triggers на дисконнект и завязаны ли они на MON$ATTACHMENTS? А конкретнее, хотелось бы узнать, что произойдет, если сервер по каким-либо причинам аварийно завершил работу? Вполне ведь возможен вариант, что эти триггеры сработать не смогли. И в MON$ATTACHMENTS в базе зависнут записи. Что тогда произойдет при восстановлении работы сервера и обращения к этой базе - очистятся ли "мертвые" строчки в MON$ATTACHMENTS и если да, то сработают ли при этом триггеры на дисконнект?
Прошу прощения, что смешал в кучу два понятия, просто у нас при переходе с IB на FB возникла проблема. В IB мы использовали свою табличку в базе, в которой лежали активные сессии. В силу различных причин (н-р, аварийных отключений клиентов от базы) в этой табличке периодически появлялся мусор, который чистился при подключении любого пользователя путем сравнения содержимого таблицы с содержимым TMP$ATTACHMENTS. Однако в FB такое не канает - юзер (не SYSDBA) видит только свой аттачмент и не может понять, какие из записей в нашей таблице мертвые, а какие - нет. Альтернативы я вижу две:
1. Использование database triggers. Исключаются все причины образования мусорных записей, связанные с ненормальным отключением клиента, но, видимо, остаются проблемы при ненормальном завершении работы самого сервера.
2. Вроде как в FB 2.5 мониторинговые таблицы полностью может видеть не только SYSDBA. Вот только как этого добиться описаний пока нет, да и у FB 2.5. даже беты пока нет, а сроки уже поджимают...
Вопрос следующий - как работают в FB database triggers на дисконнект и завязаны ли они на MON$ATTACHMENTS? А конкретнее, хотелось бы узнать, что произойдет, если сервер по каким-либо причинам аварийно завершил работу? Вполне ведь возможен вариант, что эти триггеры сработать не смогли. И в MON$ATTACHMENTS в базе зависнут записи. Что тогда произойдет при восстановлении работы сервера и обращения к этой базе - очистятся ли "мертвые" строчки в MON$ATTACHMENTS и если да, то сработают ли при этом триггеры на дисконнект?
Прошу прощения, что смешал в кучу два понятия, просто у нас при переходе с IB на FB возникла проблема. В IB мы использовали свою табличку в базе, в которой лежали активные сессии. В силу различных причин (н-р, аварийных отключений клиентов от базы) в этой табличке периодически появлялся мусор, который чистился при подключении любого пользователя путем сравнения содержимого таблицы с содержимым TMP$ATTACHMENTS. Однако в FB такое не канает - юзер (не SYSDBA) видит только свой аттачмент и не может понять, какие из записей в нашей таблице мертвые, а какие - нет. Альтернативы я вижу две:
1. Использование database triggers. Исключаются все причины образования мусорных записей, связанные с ненормальным отключением клиента, но, видимо, остаются проблемы при ненормальном завершении работы самого сервера.
2. Вроде как в FB 2.5 мониторинговые таблицы полностью может видеть не только SYSDBA. Вот только как этого добиться описаний пока нет, да и у FB 2.5. даже беты пока нет, а сроки уже поджимают...