2021-12-29
pg_event_trigger_ddl_commands() 的 command 列如何使用或显示?
或者说如何在事件触发器中通过 pg_event_trigger_ddl_commands()解析出真正的SQL语句
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
或者说如何在事件触发器中通过 pg_event_trigger_ddl_commands()解析出真正的SQL语句
好问题,但是为什么不直接使用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
墨值悬赏