★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE CONSTRAINT TRIGGER

名前

CREATE CONSTRAINT TRIGGER -- 新しい制約トリガを定義する

概要

CREATE CONSTRAINT TRIGGER name
    AFTER event [ OR ... ]
    ON table_name
    [ FROM referenced_table_name ]
    { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
    FOR EACH ROW
    [ WHEN ( condition ) ]
    EXECUTE PROCEDURE function_name ( arguments )

説明

CREATE CONSTRAINT TRIGGER制約トリガを作成します。 これは、トリガの発生タイミングをSET CONSTRAINTSを使用して調整できる点を除き、通常のトリガと同じです。 制約トリガはAFTER ROWトリガでなければなりません。 これは、トリガイベントを引き起こす文の終わり、または、その文を含むトランザクションの終わりのいずれかに発生することができます。 後者の場合、これは遅延されたと言われます。 遅延されたトリガ発行を待機することを、SET CONSTRAINTSを使用して強制的に、即座に発生させることもできます。

パラメータ

name

制約トリガの名前です。 これは、SET CONSTRAINTSを使用してトリガの動作を変更する時に使用される名前でもあります。 この名前はスキーマで修飾することはできません。 トリガはテーブルのスキーマを継承します。

event

INSERTUPDATEDELETEのいずれかです。 これはトリガを発行するイベントを指定するものです。 ORを使用して複数のイベントを指定することができます。

table_name

トリガイベントが発生するテーブルの名前です(スキーマ修飾可)。

referenced_table_name

この制約により参照されるテーブルの名前です(スキーマ修飾可)。 このオプションは外部キー制約トリガによって使用されるもので、通常使用することは推奨されません。

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

トリガ発行タイミングのデフォルトです。 これらの制約オプションについてはCREATE TABLEを参照してください。

condition

トリガ関数が実際に実行されるか否かを決定する論理式です。 これはCREATE TRIGGERと同様の動作を行います。 特にWHEN条件の評価が遅延されずに、行の更新操作が行われた長後に行われることに注意して下さい。 条件の評価結果がtrueでなければ、トリガは遅延実行用のキューに保持されません。

function_name

トリガが発行された場合に呼び出される関数です。 CREATE TRIGGERを参照してください。

arguments

トリガ関数に渡す引数文字列で、省略可能です。 CREATE TRIGGERを参照してください。

互換性

CREATE CONTRAINT TRIGGERは、標準SQLに対するPostgreSQLの拡張です。

関連項目

CREATE TRIGGER, DROP TRIGGER, SET CONSTRAINTS