tcn. Уведомления об изменениях в любой та блице
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль предоставляет триггерную функцию triggered_change_notification
, уведомляющую приемники уведомлений об изменениях в любой таблице, к которой привязан триггер. Функция должна использоваться в качестве триггера AFTER
вида FOR EACH ROW
.
Функции в операторе CREATE TRIGGER
передается один необязательный параметр. Если параметр присутствует, он задает имя канала для уведомлений; при отсутствии в качестве имени канала будет назначено tcn
.
Сообщение уведомления включает имя таблицы, букву, обозначающую тип выполняемой операции и пары имя столбца/значение для столбца первичного ключа. Разные части сообщения разделены запятыми. Для упрощения разбора сообщения регулярными выражениями имена таблицы и столбцов всегда заключаются в двойные кавычки, а значения данных — в апострофы. Внутренние кавычки и апострофы дублируются.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Модуль считается «доверенным», поэтому его могут устанавливать пользователи, имеющие право CREATE
в текущей базе данных:
CREATE EXTENSION tcn SCHEMA ext;
Настройка
Настройка не требуется.
Использование модуля
CREATE TABLE tcndata (
a INT NOT NULL,
b DATE NOT NULL,
c TEXT,
PRIMARY KEY (a, b)
);
CREATE TRIGGER tcndata_tcn_trigger
AFTER INSERT OR UPDATE OR DELETE ON tcndata
FOR EACH ROW EXECUTE FUNCTION triggered_change_notification();
listen tcn;
INSERT INTO tcndata VALUES (1, date '2012-12-22', 'one'),
(1, date '2012-12-23', 'another'),
(2, date '2012-12-23', 'two');
INSERT 0 3
Asynchronous notification "tcn" with payload ""tcndata",I,"a"='1',"b"='2012-12-22'" received from server process with PID 22770.
Asynchronous notification "tcn" with payload ""tcndata",I,"a"='1',"b"='2012-12-23'" received from server process with PID 22770.
Asynchronous notification "tcn" with payload ""tcndata",I,"a"='2',"b"='2012-12-23'" received from server process with PID 22770.
UPDATE tcndata SET c = 'uno' WHERE a = 1;
UPDATE 2
Asynchronous notification "tcn" with payload ""tcndata",U,"a"='1',"b"='2012-12-22'" received from server process with PID 22770.
Asynchronous notification "tcn" with payload ""tcndata",U,"a"='1',"b"='2012-12-23'" received from server process with PID 22770.
DELETE FROM tcndata WHERE a = 1 AND b = date '2012-12-22';
DELETE 1
Asynchronous notification "tcn" with payload ""tcndata",D,"a"='1',"b"='2012-12-22'" received from server process with PID 22770.
Ссылки на документацию разработчика
Исходная документация PosgreSQL по модулю tcn: https://www.postgresql.org/docs/15/tcn.html.