事件触发器函数
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;
$$;