TFBEventMonitor/ru
│
English (en) │
русский (ru) │
References:
Tutorials/practical articles:
Databases |
TFBEventMonitor из модуля FBEventMonitor используется для мониторинга именованных событий, отправленных с сервера базы данных Firebird. События обычно генерируются триггерами при определенных операциях с базой данных.
Использование событий означает, что вы можете избежать регулярного опроса базы данных на предмет изменений статуса и могут быть полезны в случаях высокой нагрузки.
Пример
Обновление memo получаемыми событиями. Мониторинг событий с E1 по E7.
procedure TForm1.StartMonitor;
begin
EventsM:=TFBEventMonitor.create(Self);
EventsM.Connection:=IBConnection1;
EventsM.Events.CommaText:='"E1",E2,E3,E4,"E5","E6","E7"'; //кавычки игнорируются
EventsM.OnEventAlert:=OnFBEvent;
EventsM.RegisterEvents; // активирует IBConnection1, если он до сих пор не подсоединен к БД
end;
procedure TForm1.StopMonitor;
begin
EventsM.UnRegisterEvents;
EventsM.Free;
end;
procedure TForm1.OnFBEvent(Sender: TObject; EventName: string;
EventCount: longint; var CancelAlerts: boolean);
begin
Memo1.Lines.Add(EventName+' произошло '+IntToStr(EventCount)+' раз.');
end;
Монитор событий прекращает мониторинг, когда связанный TIBConnection отключается от БД, и не перезапускается автоматически. Используйте обработчики событий TIBConnection.AfterConnect и TIBConnection.BeforeDisconnect для автоматического запуска и остановки мониторинга.
Сервер базы данных отправляет события всем соединениям, зарегистрированным для этих событий, кроме тех, которые созданы самим соединением. События отправляются после завершения транзакции. Откат транзакции отменит все события, созданные в этой транзакции. fbeventstest.pp
в корневом каталоге fcl packages/fcl-db/examples/ представляет собой тестовую/демонстрационную программу, которая создает хранимую процедуру для отправки события с произвольным именем и использует второе соединение для мониторинга отправленных событий.
Предупреждение: TFBEventMonitor создает поток для мониторинга входящих событий. На Unix включают cthreads или любой другой менеджер потоков.
См. также
- Using Firebird with FPC/Lazarus sqldb.
- Firebird documentation/readme files on events
- Presentation on Firebird events