PostgreSQL Listen, Notify, Event Alerter, Kodları açıklama kısmına ekledim.

preview_player
Показать описание
Veri tabanı bağlantı bileşeni olarak FireDAC kullanılmıştır. Veri tabanında yapılan herhangi bir güncelleme silme ekleme işlemi diğer kullanıcılara da otomatik olarak yansıtılıyor.

RETURNS trigger AS
$BODY$
BEGIN
--tablo isimlerine göre bildirimler oluşacak ikinci değerde geçerli kaydın id bilgisi
IF (TG_OP = 'INSERT') THEN
PERFORM pg_notify(TG_TABLE_NAME, NEW.id::varchar);
ELSIF (TG_OP = 'UPDATE') THEN
PERFORM pg_notify(TG_TABLE_NAME, OLD.id::varchar);
ELSIF (TG_OP = 'DELETE') THEN
PERFORM pg_notify(TG_TABLE_NAME, '');
END IF;
RETURN NEW;
END;$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 100;
OWNER TO postgres;

CREATE TRIGGER x_table_notify
AFTER INSERT OR UPDATE OR DELETE
FOR EACH ROW

FDEventAlerter.Names.Add('stok_karti'); //dinleyeceğiniz bildirimin adını yazın ben trigger içinde TG_TABLE_NAME ile tablo adını yazmıştım. Bu nedenle sizde tablo adınızı girmelisiniz.
FDEventAlerter.Connection := FDConnection;
FDEventAlerter.Active := True;

const AEventName: string; const AArgument: Variant);
//var
// n1: Integer;
// processID: string;
// recordID: Integer;
begin
// inherited;
// if VarIsArray( AArgument ) then
// for n1 := VarArrayLowBound(AArgument, 1) to VarArrayHighBound(AArgument, 1) do
// if n1 = 0 then
// processID := VarToStr(AArgument[n1]) //bildirimi oluşturan kullanıcının db üzerindeki process id (pid) bilgisi
// else if n1 = 1 then
// recordID := VarToStr(AArgument[n1]).ToInteger; //kaydın id bilgisi
FDQuery.Refresh; //bu işlem ile query datalarını dolayısıyla bağlı olduğu gridi refresh etmiş oluyoruz.
end;
Рекомендации по теме
Комментарии
Автор

değerli bilgiler için teşekkür ederim.

delphican