無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

34.54. triggers

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以降に準拠しています。


powered by SEO.CUG.NET