pg_trigger
pg_triggerカタログはテーブルおよびビュー上のトリガを保存します。
CREATE TRIGGERを参照してください。
表52.56 pg_triggerの列
| 名前 | 型 | 参照先 | 説明 |
|---|---|---|---|
oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
tgrelid | oid | | トリガのかかっているテーブル |
tgname | name | トリガ名(同一テーブル内で一意である必要があります) | |
tgfoid | oid | | 呼び出される関数 |
tgtype | int2 | トリガ発行条件を指定するビットマスク | |
tgenabled | char |
どのsession_replication_roleモードでトリガが発行されるかを制御します。
O = 「起点」モードと「ローカル」モードでトリガを発行します,
D = トリガは無効です,
R = 「replica」モードでトリガを発行します,
A = 常にトリガを発行します.
| |
tgisinternal | bool |
トリガが(通常tgconstraintにより識別される制約を強制するために)内部的に生成される場合は真。
| |
tgconstrrelid | oid | | 参照整合性制約で参照されるテーブル |
tgconstrindid | oid | | 一意性、主キー、参照整合性制約や排他制約をサポートするインデックス |
tgconstraint | oid | | 存在する場合は、トリガに関連するpg_constraintの項目 |
tgdeferrable | bool | トリガが遅延可能である場合は真 | |
tginitdeferred | bool | トリガの初期状態が遅延可能と宣言されていれば真 | |
tgnargs | int2 | トリガ関数に渡される引数の数 | |
tgattr | int2vector | | トリガが列固有であれば列番号。さもなくば空の配列 |
tgargs | bytea | トリガに渡される引数文字列で、それぞれヌル文字で終結 | |
tgqual | pg_node_tree |
トリガのWHEN条件に関する(nodeToString()表現による)式ツリー。
存在しなければNULL
| |
tgoldtable | name | OLD TABLEに対するREFERENCING句の名前、なければNULL | |
tgnewtable | name | NEW TABLEに対するREFERENCING句の名前、なければNULL |
現在、列固有のトリガ処理はUPDATEイベントのみでサポートされていますので、tgattrはこの種類のイベントにのみ関連します。
tgtypeにはこの他のイベント用のビットが含まれているかもしれませんが、これらはtgattrの値とは関係ないテーブル全体のものであると仮定されます。
tgconstraintがゼロではないとき、tgconstrrelid、tgconstrindid、tgdeferrable、tginitdeferredは参照されるpg_constraint項目と共に冗長となっています。
しかし遅延不可能なトリガを遅延可能な制約に関連付けさせることが可能です。
外部キー制約では一部を遅延可能、一部を遅延不可能なトリガを持つことができます。
pg_class.relhastriggersは、リレーションがこのカタログ内にトリガを持っている場合は真とならなければなりません。