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

9.28. イベントトリガー関数

現時点でPostgreSQLは一つの組み込みイベントトリガー支援関数、pg_event_trigger_dropped_objectsを提供しています。

関数pg_event_trigger_dropped_objectsは、それが呼ばれたsql_dropイベントのコマンドにより削除された全てのオブジェクトのリストを返します。 そのほかいかなる状況で呼ばれた場合、pg_event_trigger_dropped_objectsはエラーを生じさせます。 pg_event_trigger_dropped_objectsは以下の列を返します。

名前説明
classidOidオブジェクトが所属するカタログのOID
objidOidカタログ内に所有するオブジェクトのOID
objsubidint32 (列の属性番号のような)オブジェクトの副id
object_typetextオブジェクトの型
schema_nametext オブジェクトが所属しているスキーマの名前
object_nametext スキーマと名前の組み合わせがオブジェクトに対しる一意の識別子として使用可能な場合のオブジェクトの名前。 そうでないときはNULL。引用符は適用されず、名前は決してスキーマで権限を与えられません。
object_identitytext オブジェクト識別のテキスト表現で、スキーマで権限を与えられています。権限のなかにあるそれぞれ全ての識別子は必要であれば引用符で括られます。

関数pg_event_trigger_dropped_objectsは以下のようにイベントトリガーとして使用可能です。

CREATE FUNCTION test_event_trigger_for_drops()
        RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE
    obj record;
BEGIN
    FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    LOOP
        RAISE NOTICE '% dropped object: % %.% %',
                     tg_tag,
                     obj.object_type,
                     obj.schema_name,
                     obj.object_name,
                     obj.object_identity;
    END LOOP;
END
$$;
CREATE EVENT TRIGGER test_event_trigger_for_drops
   ON sql_drop
   EXECUTE PROCEDURE test_event_trigger_for_drops();

イベントトリガーについての詳細は第37章を参照してください。