事件触发器函数

  • 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;

  1. RAISE NOTICE 'triggered';
  2. END LOOP;
  3. END; $$ LANGUAGE plpgsql; ```
  4. 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;

  1. INSERT INTO dropped_objects
  2. (type, schema, object) VALUES
  3. (obj.object_type, obj.schema_name, obj.object_identity);
  4. END LOOP;
  5. END
  6. $$; ```
  7. 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. $$;