| PostgreSQL 9.4.5文書 | |||
|---|---|---|---|
| 前のページ | 上に戻る | 第 9章関数と演算子 | 次のページ |
現時点で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 | オブジェクトが所属しているスキーマの名前, if any; otherwise NULL. No quoting is applied. |
| 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章を参照してください。