gpt4 book ai didi

sql - 获取 PostgreSQL 事件触发器的表名

转载 作者:行者123 更新时间:2023-12-04 10:19:11 26 4
gpt4 key购买 nike

我在 PostgreSQL 9.6 数据库中有多个表,我想在外部应用程序中监视和处理这些更改。

仅处理数据更改并不难,但现在我想监视要存储的数据库的结构更改。这就是我所拥有的:

CREATE OR REPLACE FUNCTION log_structureChanged()
RETURNS event_trigger AS $$
BEGIN
UPDATE dbchanged SET changed=2 WHERE table_name = TG_ARGV[0];
RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;


CREATE EVENT TRIGGER testData_struc
ON ddl_command_end
WHEN TAG IN ( 'CREATE TABLE', 'ALTER TABLE', 'DROP TABLE' )
EXECUTE PROCEDURE log_structureChanged();

EXECUTE PROCEDURE被调用,我想解析已进行更改的表。官方的 PostgreSQL 文档并没有真正帮助我 - 我也可能没有完全理解某些部分。

那么我如何解析 EVENT TRIGGER 上的表开火?它存储在变量中吗?

最佳答案

described in the documentation ,可以调用函数pg_event_trigger_ddl_commands() ,这将为每个受影响的对象返回一行。

您可以使用结果列 object_identity包含受影响对象的文本描述,或 classidobjid ,其中包含包含对象的目录表的对象 ID 和受影响对象的对象 ID。

关于sql - 获取 PostgreSQL 事件触发器的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60947580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com