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 можно получить по ссылке.