The <filename>tcn</filename> module provides a trigger function that notifies
listeners of changes to any table on which it is attached. It must be
used as an <literal>AFTER</literal> trigger <literal>FOR EACH ROW</literal>.
tcn
モジュールは関連づけされたテーブル上の変更を監視者に通知するトリガ関数を提供します。
これはFOR EACH ROW
のAFTER
トリガとして使用しなければなりません。
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
このモジュールは「trusted」と見なされます。つまり、現在のデータベースに対してCREATE
権限を持つ非スーパーユーザがインストールできます。
Only one parameter may be supplied to the function in a
<literal>CREATE TRIGGER</literal> statement, and that is optional. If supplied
it will be used for the channel name for the notifications. If omitted
<literal>tcn</literal> will be used for the channel name.
CREATE TRIGGER
文の中で与えることができるパラメータは1つしかありませんが、省略することができます。
与えられた場合、それは通知のチャネル名として使用されます。
省略された場合はチャネル名としてtcn
が使用されます。
The payload of the notifications consists of the table name, a letter to indicate which type of operation was performed, and column name/value pairs for primary key columns. Each part is separated from the next by a comma. For ease of parsing using regular expressions, table and column names are always wrapped in double quotes, and data values are always wrapped in single quotes. Embedded quotes are doubled. 通知のペイロードにはテーブル名、どのような種類の操作が行われたかを示す文字、主キー列における列名と値の組み合わせが含まれます。 部位はそれぞれカンマで区切られています。 正規表現を使用して簡単に解析するために、テーブル名と列名は常に二重引用符で括られ、またデータ値は常に単一引用符で括られています。 内部に含まれる引用符は二重化されます。
A brief example of using the extension follows. この拡張を使用する簡単な例を以下に示します。
test=# create table tcndata test-# ( test(# a int not null, test(# b date not null, test(# c text, test(# primary key (a, b) test(# ); CREATE TABLE test=# create trigger tcndata_tcn_trigger test-# after insert or update or delete on tcndata test-# for each row execute function triggered_change_notification(); CREATE TRIGGER test=# listen tcn; LISTEN test=# insert into tcndata values (1, date '2012-12-22', 'one'), test-# (1, date '2012-12-23', 'another'), test-# (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. test=# 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. test=# 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.