TRIGGERは新しいトリガを作成します。そのトリガは指定したテーブルと関連付けられ、特定のイベントが発生した時に指定した関数funcnameを実行します。トリガは、行への操作が開始される前(制約条件のチェックとINSERT、UPDATEまたはDELETEが行われる前)、あるいは、操作が完了した後(制約条件がチェックされ、INSERT、UPDATEまたはDELETEが完了した後)のいずれでも起動を指定することができます。イベントの前にトリガが起動すると、そのトリガは対象行に対する操作を省略することも、(INSERTとUPDATEの操作時のみ)挿入された行を変更することもできます。イベントの後にトリガが起動すると、最終の挿入、更新あるいは削除を含んだ全ての変更がトリガに"可視"となります。ROW付きのトリガは、その操作によって変更される行毎に1回呼び出されます。DELETEトリガを、行が削除される度に1回ずつ、独立して10回呼び出すことになります。STATEMENT付きのトリガは、その操作によって何行変更されたかに関わらず、任意の操作毎に1回のみ実行されます。STATEMENTトリガを実行します。)同じ種類の複数のトリガが同一イベントに定義された場合、名前のアルファベット順で実行されます。SELECTは行を全く変更しませんので、SELECTトリガを作成することはできません。この場合は、ルールやビューの方がより適しています。トリガに関するより詳細については、第32章を参照してください。パラメータname新しいトリガに付与する名前です。この名前は、同じテーブルの他のトリガとは異なる名前にする必要があります。BEFOREAFTER関数の呼び出しをイベントの前に行うか後に行うかを決定します。eventINSERT、UPDATE、DELETEのいずれかです。これは、トリガを起動するイベントを指定するものです。ORを使用して、複数のイベントを指定することができます。(スキーマ修飾名でも可)。STATEMENTこれは、トリガプロシージャの起動を、トリガイベントによって影響を受ける行毎に1回行うか、SQL文毎に1回のみ行うかを指定します。STATEMENTがデフォルトです。funcname引数を取らず、trigger型を返す、ユーザが提供する関数であり、トリガが起動した時に実行されます。argumentsトリガ実行時に関数に渡される引数をカンマで区切ったリストです(省略可能)。引数は、リテラル文字列定数です。単純な名前および数値定数もここに記述できますが、全て文字列に変換されます。関数内でどのようにこのトリガ引数にアクセスするかについては、トリガ関数を実装した言語の説明を参照してください。これは、通常の関数引数とは異なる場合があります。注釈テーブルにトリガを作成するには、ユーザはそのテーブルに対しTRIGGER権限を持つ必要があります。7.3より前のバージョンでは、トリガ関数をtrigger型ではなくプレースホルダ用のopaque型を返すように宣言する必要がありました。TRIGGERではopaque型を返すよう宣言された関数を受け入れます。注意を促すメッセージを表示し、宣言された関数の戻り値型をtriggerに変換します。TRIGGERコマンドを使用してください。項32.4に完全な例があります。TRIGGER文はSQL:1999標準のサブセットを実装したものです。(SQL-92にはトリガについての規定はありません。次の機能が欠落しています。SQL:1999では、指定した列への更新時に起動するトリガが可能です。col2)SQL:1999では、"old"と"new"の別名や、トリガで起動される動作定義で使用されるテーブルに別名を定義することができます。PostgreSQLでは、トリガプロシージャを任意数のユーザ定義言語で作成することができますので、データへのアクセスは言語固有の方法で扱われます。PostgreSQLでは、トリガの動作として、ユーザ定義の関数を実行させることしかできません。SQL:1999では、他のSQLコマンドを複数実行させることができます。TABLEを実行させることができます。この制限を回避する方法は簡単で、実行させたいコマンドを実行するユーザ定義関数を作成することです。SQL:1999では、複数のトリガは、作成時刻順に起動すべきであると規定しています。PostgreSQLでは名前順であり、その動作の判断がより簡単になっています。PostgreSQLの拡張です。