★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

37.57. triggers #

triggersビューには、現在のデータベース内で、現在のユーザが所有するあるいは何らかのSELECT以外の権限を持つテーブルまたはビューに定義された、全てのトリガがあります。

表37.55 triggersの列

列 型

説明

trigger_catalog sql_identifier

トリガを持つデータベースの名前です(常に現在のデータベースです)。

trigger_schema sql_identifier

トリガを持つスキーマの名前です。

trigger_name sql_identifier

トリガの名前です。

event_manipulation character_data

トリガを発するイベントです (INSERTUPDATEもしくはDELETEです)。

event_object_catalog sql_identifier

トリガが定義されたテーブルを持つデータベースの名前です(常に現在のデータベースです)。

event_object_schema sql_identifier

トリガが定義されたテーブルを持つスキーマの名前です。

event_object_table sql_identifier

トリガが定義されたテーブルの名前です。

action_order cardinal_number

同じテーブルで同じevent_manipulationaction_timingaction_orientationのトリガを発行する順序です。 PostgreSQLでは、トリガは名前順に発行されますので、この列はそれを反映しています。

action_condition character_data

トリガのWHEN条件です。なければNULLです (現在有効なロールが所有していないテーブルの場合もNULLです)。

action_statement character_data

トリガによって実行される文です (現在は常にEXECUTE FUNCTION function(...)です)。

action_orientation character_data

トリガの発行が処理行ごとか文ごとかを識別します (ROWもしくはSTATEMENTです)。

action_timing character_data

トリガを発する時期です (BEFOREAFTERもしくはINSTEAD OFです)。

action_reference_old_table sql_identifier

old遷移テーブルの名前です。なければNULLです。

action_reference_new_table sql_identifier

new遷移テーブルの名前です。なければNULLです。

action_reference_old_row sql_identifier

PostgreSQLでは利用できない機能に適用されるものです。

action_reference_new_row sql_identifier

PostgreSQLでは利用できない機能に適用されるものです。

created time_stamp

PostgreSQLでは利用できない機能に適用されるものです。


PostgreSQLにおけるトリガには、標準SQLと比べ、2つの非互換があり、これらは情報スキーマの表現に影響を与えます。 1つ目は、PostgreSQLではトリガ名は、独立したスキーマオブジェクトではなく、それぞれのテーブル内で局所的であることです。 そのため、別のテーブルに属している場合、1つのスキーマ内でトリガ名を重複させることができます。 (trigger_catalogtrigger_schemaは実際、そのトリガが定義されたテーブルに属する値となります。) 2つ目は、PostgreSQLではトリガは複数のイベントで発行できる点です(例えばON INSERT OR UPDATEです)。 一方、標準SQLでは1つのみしか許されません。 トリガが複数のイベントで発行するように定義された場合、それぞれのイベントで1行という形で、情報スキーマ内では複数の行として表現されます。 これらの2つの問題の結果、triggersビューの主キーは実際、標準SQLで定義された(trigger_catalog, trigger_schema, trigger_name)ではなく、(trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation)となります。 それでもなお、標準SQLに従う(スキーマ内でトリガ名を一意とし、トリガに対し1種類のイベントしか持たせないという)手法でトリガを定義していれば、これは影響ありません。

注記

PostgreSQL 9.1 より前は、このビューの列の action_timingaction_reference_old_tableaction_reference_new_tableaction_reference_old_rowaction_reference_new_row はそれぞれ condition_timingcondition_reference_old_tablecondition_reference_new_tablecondition_reference_old_rowcondition_reference_new_row という名前でした。これらの命名は SQL: 1999標準におけるものです。新しい名前はSQL:2003以降に準拠しています。