他のバージョンの文書 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 EVENT TRIGGER

CREATE EVENT TRIGGER — 新しいイベントトリガを定義する

概要

CREATE EVENT TRIGGER name
    ON event
    [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
    EXECUTE { FUNCTION | PROCEDURE } function_name()

説明

CREATE EVENT TRIGGERは新しいイベントトリガを作成します。 指定されたイベントが発生し、トリガに関連するWHEN条件がもしあればそれを満たす場合、トリガ関数が実行されます。 イベントトリガの一般的な紹介については、第39章を参照してください。 イベントトリガを作成したユーザがその所有者となります。

パラメータ

name

新しいトリガに付ける名前です。 この名前はデータベース内で一意でなければなりません。

event

指定関数を呼び出すきっかけとなるイベントの名前です。 イベント名の詳細については39.1を参照してください。

filter_variable

イベントをフィルタするために使用される変数の名前です。 これにより、サポートしている状況の一部に対してのみにトリガの発行を制限することができます。 現在filter_variableでサポートされているものはTAGのみです。

filter_value

どこでトリガを発行すべきかについて、関連するfilter_variable用の値のリストです。 TAGの場合、これはコマンドタグ(例えば'DROP FUNCTION')のリストを意味します。

function_name

引数を取らずevent_trigger型を返すと宣言された、ユーザが提供する関数です。

CREATE EVENT TRIGGERの構文では、キーワードFUNCTIONPROCEDUREは等価ですが、参照されている関数はどちらの場合でも関数でなければならず、プロシージャであってはなりません。 ここでキーワードPROCEDUREを使うことは、歴史的なものであり廃止予定です。

注釈

スーパーユーザのみがイベントトリガを作成することができます。

シングルユーザモード(postgres参照)ではイベントトリガは無効になります。 エラーのあるイベントトリガが原因でデータベースの動作がおかしくなり、トリガを削除することもできない状態になった場合は、シングルユーザモードで再起動してください。 削除できるようになります。

すべてのDDLコマンドの実行を禁じます。

CREATE OR REPLACE FUNCTION abort_any_command()
  RETURNS event_trigger
 LANGUAGE plpgsql
  AS $$
BEGIN
  RAISE EXCEPTION 'command % is disabled', tg_tag;
END;
$$;

CREATE EVENT TRIGGER abort_ddl ON ddl_command_start
   EXECUTE FUNCTION abort_any_command();

互換性

標準SQLにはCREATE EVENT TRIGGER文はありません。

関連項目

ALTER EVENT TRIGGER, DROP EVENT TRIGGER, CREATE FUNCTION