暂无图片
pg_event_trigger_ddl_commands() 的 command 列如何使用或显示?
我来答
分享
云毅
2021-12-29
pg_event_trigger_ddl_commands() 的 command 列如何使用或显示?

或者说如何在事件触发器中通过 pg_event_trigger_ddl_commands()解析出真正的SQL语句

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
严少安
暂无图片

好问题,但是为什么不直接使用log(log_statement = ddl)功能呢?

(postgres@[local]) [sbtest] 16:08:37# CREATE OR REPLACE FUNCTION aaa() sbtest-# RETURNS event_trigger sbtest-# LANGUAGE plpgsql sbtest-# AS $$ sbtest$# DECLARE r RECORD; sbtest$# BEGIN sbtest$# FOR r IN SELECT * FROM pg_event_trigger_ddl_commands() sbtest$# LOOP sbtest$# RAISE NOTICE 'END: command_tag=% type=% identity=% objid=% objsubid=% schema_name=%', sbtest$# r.command_tag, r.object_type, r.object_identity, r.objid, r.objsubid, r.schema_name; sbtest$# END LOOP; sbtest$# END; $$; CREATE FUNCTION Time: 3.346 ms (postgres@[local]) [sbtest] 16:08:43# CREATE EVENT TRIGGER bbb ON ddl_command_end sbtest-# EXECUTE PROCEDURE aaa(); CREATE EVENT TRIGGER Time: 2.968 ms (postgres@[local]) [sbtest] 16:08:48# CREATE TABLE ccc (id int); NOTICE: END: command_tag=CREATE TABLE type=table identity=public.ccc objid=25138 objsubid=0 schema_name=public CREATE TABLE Time: 7.784 ms (postgres@[local]) [sbtest] 16:09:23#
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏