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

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 は以下の列を返します。

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

関数 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章 を参照してください。


powered by SEO.CUG.NET