【发布时间】:2019-07-09 04:38:17
【问题描述】:
在标签 ALTER TABLE 上的 pgsql 事件触发器中,我想知道正在更改哪个表。
pg 变量不涵盖这一点,GET STACKED DIAGNOSTICS 公开的变量也不涵盖这一点。
在变量可用的情况下,触发器函数本身是否有任何方法可以查看负责启动函数的 SQL 命令的文本。
例如,如果
ALTER TABLE base1 ADD COLUMN col1 int;
负责调用事件触发器,有没有什么办法可以在事件触发器内看到ALTER TABLE base1 ADD COLUMN col1 int文本本身?
【问题讨论】:
-
SELECT current_query()。但它只会显示 top level 查询,这不一定是触发事件触发器的原因 - 例如,如果您使用 PL/PgSQL 函数执行了ALTER TABLE。事件触发器将被扩展以添加更多关于命令的信息,但目前在 9.3/9.4 中非常有限。 -
@CraigRinger - 谢谢。期待扩展!
-
如果你用 C 写了一个事件触发器,你也有命令的解析树。 postgresql.org/docs/9.3/static/event-trigger-interface.html 肯定不是依赖它的最佳方法,但在扩展此功能之前,它是某种东西。
标签: postgresql triggers plpgsql