openGauss SQL语法 —函数和操作符:事件触发器函数

事件触发器函数

  • pg_event_trigger_ddl_commands

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

    参数:空

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

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

    示例:

    openGauss=# CREATE OR REPLACE FUNCTION ddl_command_test()
    RETURNS event_trigger
    AS $$
    DECLARE
        obj record;
    BEGIN
        FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands()
            LOOP
            RAISE NOTICE 'command: %',
                    obj.command_tag;
    
                RAISE NOTICE 'triggered';
            END LOOP;
    END; $$ LANGUAGE plpgsql;
    
  • pg_event_trigger_dropped_objects

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

    参数:空

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

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

    示例:

    openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_dropped_objects() RETURNS event_trigger
    LANGUAGE plpgsql AS $$
    DECLARE
        obj record;
    BEGIN
        FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
        LOOP
            IF obj.object_type = 'table' THEN
                    EXECUTE format('DROP TABLE IF EXISTS audit_tbls.%I',
                        format('%s_%s', obj.schema_name, obj.object_name));
            END IF;
    
        INSERT INTO dropped_objects
            (type, schema, object) VALUES
            (obj.object_type, obj.schema_name, obj.object_identity);
        END LOOP;
    END
    $$;
    
  • pg_event_trigger_table_rewrite_oid

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

    参数:空

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

    返回值类型:oid

    示例:

    openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger
    LANGUAGE plpgsql AS $$
    BEGIN
    RAISE NOTICE 'Table ''%'' is being rewritten (reason = %)',
                pg_event_trigger_table_rewrite_oid()::regclass,
                pg_event_trigger_table_rewrite_reason();
    END;
    $$;
    
  • pg_event_trigger_table_rewrite_reason

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

    参数:空

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

    返回值类型:int4

    示例:

    openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger
    LANGUAGE plpgsql AS $$
    BEGIN
    RAISE NOTICE 'Table ''%'' is being rewritten (reason = %)',
                pg_event_trigger_table_rewrite_oid()::regclass,
                pg_event_trigger_table_rewrite_reason();
    END;
    $$;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值