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

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オブジェクトが所属しているスキーマの名前, if any; otherwise NULL. No quoting is applied.
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章を参照してください。