PostgreSQL 9.3.2文書 | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 34章情報スキーマ | 次のページ |
triggersビューには、現在のデータベース内で、現在のユーザが所有するあるいは何らかのSELECT以外の権限を持つテーブルまたはビューに定義された、全てのトリガがあります。
表 34-52. triggersの列
名前 | データ型 | 説明 |
---|---|---|
trigger_catalog | sql_identifier | トリガを持つデータベースの名前です(常に現在のデータベースです)。 |
trigger_schema | sql_identifier | トリガを持つスキーマの名前です。 |
trigger_name | sql_identifier | トリガの名前です。 |
event_manipulation | character_data | トリガを発するイベントです (INSERT、UPDATEもしくはDELETEです)。 |
event_object_catalog | sql_identifier | トリガが定義されたテーブルを持つデータベースの名前です (常に現在のデータベースです)。 |
event_object_schema | sql_identifier | トリガが定義されたテーブルを持つスキーマの名前です。 |
event_object_table | sql_identifier | トリガが定義されたテーブルの名前です。 |
action_order | cardinal_number | 未実装です。 |
action_condition | character_data | トリガのWHEN条件です。なければNULLです (現在有効なロールが所有していないテーブルの場合もNULLです)。 |
action_statement | character_data | トリガによって実行される文です (現在は常にEXECUTE PROCEDURE function(...)です)。 |
action_orientation | character_data | トリガの発行が処理行ごとか文ごとかを識別します (ROWもしくはSTATEMENTです)。 |
action_timing | character_data | トリガを発する時期です (BEFORE、AFTERもしくはINSERT OFです)。 |
action_reference_old_table | sql_identifier | PostgreSQLで利用できない機能に適用されるものです。 |
action_reference_new_table | sql_identifier | PostgreSQLで利用できない機能に適用されるものです。 |
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_catalogとtrigger_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_timing、 action_reference_old_table、 action_reference_new_table、 action_reference_old_row、 action_reference_new_row はそれぞれ condition_timing、 condition_reference_old_table、 condition_reference_new_table、 condition_reference_old_row、 condition_reference_new_row という名前でした。これらの命名は SQL: 1999標準におけるものです。新しい名前はSQL:2003以降に準拠しています。