tcn

Уведомления об изменениях в любой таблице.
Схема размещения: ext.
Модуль предоставляет триггерную функцию triggered_change_notification, уведомляющую приемники уведомлений об изменениях в любой таблице, к которой привязан триггер. Функция должна использоваться в качестве триггера AFTER вида FOR EACH ROW.
Функции в операторе CREATE TRIGGER передается один необязательный параметр. Если параметр присутствует, он задает имя канала для уведомлений; при отсутствии в качестве имени канала будет назначено tcn.
Сообщение уведомления включает имя таблицы, букву, обозначающую тип выполняемой операции и пары имя столбца/значение для столбца первичного ключа. Разные части сообщения разделены запятыми. Для упрощения разбора сообщения регулярными выражениями имена таблицы и столбцов всегда заключаются в двойные кавычки, а значения данных — в апострофы. Внутренние кавычки и апострофы дублируются.

Использование модуля

Пример 1:
CREATE TABLE tcndata (
    a INT NOT NULL,
    b DATE NOT NULL,
    c TEXT,
    PRIMARY KEY (a, b)
);
Пример 2:
CREATE TRIGGER tcndata_tcn_trigger
AFTER INSERT OR UPDATE OR DELETE ON tcndata
FOR EACH ROW EXECUTE FUNCTION triggered_change_notification();
Пример 3:
listen tcn;
Пример 4:
INSERT INTO tcndata VALUES  (1, date '2012-12-22', 'one'),
                            (1, date '2012-12-23', 'another'),
                            (2, date '2012-12-23', 'two');
Пример 5:
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.
Пример 6:
UPDATE tcndata SET c = 'uno' WHERE a = 1;
Пример 7:
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.
Пример 8:
DELETE FROM tcndata WHERE a = 1 AND b = date '2012-12-22';
Пример 9:
DELETE 1
Asynchronous notification "tcn" with payload ""tcndata",D,"a"='1',"b"='2012-12-22'" received from server process with PID 22770.

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю tcn можно получить по ссылке.
Предыдущий раздел
tablefunc
Следующий раздел
tds_fdw
Была ли страница полезной?