事件触发器函数

  • pg_event_trigger_ddl_commands

    描述:在ddl_command_end事件触发器中,该函数用于报告运行中的DDL命令。

    参数:空

    事件触发器函数 - 图1 说明: 该函数仅能被事件触发器函数使用。

    返回值类型:oid,oid,int4,text,text,text,text,bool,pg_ddl_command。

    示例:

    1. openGauss=# CREATE OR REPLACE FUNCTION ddl_command_test()
    2. RETURNS event_trigger
    3. AS $$
    4. DECLARE
    5. obj record;
    6. BEGIN
    7. FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands()
    8. LOOP
    9. RAISE NOTICE 'command: %',
    10. obj.command_tag;
    11. RAISE NOTICE 'triggered';
    12. END LOOP;
    13. END; $$ LANGUAGE plpgsql;
  • pg_event_trigger_dropped_objects

    描述:在sql_drop事件触发器中,让被删除的对象列表对用户可见。

    参数:空

    事件触发器函数 - 图2 说明: 该函数仅能被事件触发器函数使用。

    返回值类型:oid,oid,int4,bool,bool,booloid,text,text,text,text,TEXTARRAY,TEXTARRAY

    示例:

    1. openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_dropped_objects() RETURNS event_trigger
    2. LANGUAGE plpgsql AS $$
    3. DECLARE
    4. obj record;
    5. BEGIN
    6. FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    7. LOOP
    8. IF obj.object_type = 'table' THEN
    9. EXECUTE format('DROP TABLE IF EXISTS audit_tbls.%I',
    10. format('%s_%s', obj.schema_name, obj.object_name));
    11. END IF;
    12. INSERT INTO dropped_objects
    13. (type, schema, object) VALUES
    14. (obj.object_type, obj.schema_name, obj.object_identity);
    15. END LOOP;
    16. END
    17. $$;
  • pg_event_trigger_table_rewrite_oid

    描述:在table_rewrite事件触发器中,让被重写的对象oid对用户可见。

    参数:空

    事件触发器函数 - 图3 说明: 该函数仅能被事件触发器函数使用。

    返回值类型:oid

    示例:

    1. openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger
    2. LANGUAGE plpgsql AS $$
    3. BEGIN
    4. RAISE NOTICE 'Table ''%'' is being rewritten (reason = %)',
    5. pg_event_trigger_table_rewrite_oid()::regclass,
    6. pg_event_trigger_table_rewrite_reason();
    7. END;
    8. $$;
  • pg_event_trigger_table_rewrite_reason

    描述:在table_rewrite事件触发器中,让被重写的对象的重写原因对用户可见。

    参数:空

    事件触发器函数 - 图4 说明: 该函数仅能被事件触发器函数使用。

    返回值类型:int4

    示例:

    1. openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger
    2. LANGUAGE plpgsql AS $$
    3. BEGIN
    4. RAISE NOTICE 'Table ''%'' is being rewritten (reason = %)',
    5. pg_event_trigger_table_rewrite_oid()::regclass,
    6. pg_event_trigger_table_rewrite_reason();
    7. END;
    8. $$;