Данная статья посвящена оповещениям базы данных. Основана на официальной документации
Оповещения базы данных основаны на оповещениях тригеров, хранимых процедур. Оповещения идентифицируются по имени и могут включать дополнительные аргументы. Клиенты и оповещения регистрируются. Многие клиенты могут получить одно сообщения и наоборот, один клиент может получить несколько событий. Когда событие не используется, приложение снимает регистрацию с этого оповещения.
Классические примеры
-Изменения данных. В случае когда приложение обновляет множество и возвращает табличные данные.
-Оповещение при некотором условии
В каждой DBMS механизм оповещения свой.
В Delphi оповещениями занимается компонент TFDEventAlerter . Каждый TFDEventAlerter слушает несколько оповещений, указанных в свойствеTFDEventAlerter.Names и использующих единый механизм, определенный в свойстве Options.Kind.
FireDAC слушает события в “бэкграунд” потоке, используя private connection к БД. Это дополнительное соединение создается автоматически FireDAC для каждого TFDEventAlerter.
Как узнать с какой БД работаем? Например, проверим MySQL
1 2 3 4 5 6 7 |
procedure TForm1.Button1Click(Sender: TObject); begin if FDConnection1.RDBMSKind=4 then showmessage('MySQL'); end; |
Далее, из документации можем посмотреть коды остальных БД
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
TFDRDBMSKinds = class public const Unknown = 0; Oracle = 1; MSSQL = 2; MSAccess = 3; MySQL = 4; DB2 = 5; SQLAnywhere = 6; Advantage = 7; Interbase = 8; Firebird = 9; SQLite = 10; PostgreSQL = 11; NexusDB = 12; DataSnap = 13; Informix = 14; Teradata = 15; MongoDB = 16; Other = 17; end; TFDRDBMSKind = type Integer; |
Написание статьи отложил так как хочу разобраться с Events в MySQL. Там не все так очевидно.
Продолжение статьи следует…