52 подписчика
Получение уведомлений от БД о изменении/создании сущности в PostgreSQL.
Создание хранимки для отправки сообщения в канал:
CREATE FUNCTION public."NotifyOnApplicationStatusChange"()
RETURNS trigger
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
data JSON;
notification JSON;
BEGIN
IF (TG_OP = 'DELETE') THEN
data = row_to_json(OLD);
ELSE
data = row_to_json(NEW);
END IF;
notification = json_build_object(
'table',TG_TABLE_NAME,
'action', TG_OP,
'data', data);
PERFORM pg_notify('datachange', notification::TEXT);
RETURN NEW;
END
$BODY$;
Создание тригера для вызова хранимки:
CREATE TRIGGER "OnStatusChange"
AFTER UPDATE ON public."Applications"
FOR EACH ROW
WHEN (OLD."State" != NEW."State")
EXECUTE PROCEDURE public."NotifyOnApplicationStatusChange"();
Код для чтения сообщений из БД в .NET (прослушивание канала).
Около минуты
3 февраля 2025