我在 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
触发的表呢?它是否存储在变量中?