查找触发器/函数/过程中的术语(列名)



是否有任何方法可以找到Postgresql数据库中存在的触发器/函数/过程中的术语(例如列名)?

我正在研究一个赋值为"null"的操作。值到一个列,我怀疑它与数据库触发器有关,但我找不到它。

我假设您没有在版本控制中方便地使用数据库模式代码。

如果是这种情况,那么最简单的方法可能是pg_dump --schema-only和grep或您最喜欢的文本编辑器。这是我的首选选项,因为在任何情况下您都希望看到函数体。

你总是可以查询sql/plpgsql/plpython等函数的文本(它们在pg_proc中),但这可能比仅仅转储模式更繁琐。

最后,plpgsql-check为函数提供了一个依赖项列表工具。它可以显示任何特定plpgsql函数使用的表和其他函数。

如果你的任何函数生成动态SQL,那么你当然不能保证能够找到你的表/列的名称。在这种情况下,你可以尝试添加一个AFTER触发器(称为"zzz_something")所以它最后运行),它可以检查您的列是否为NULL,如果是,则记录current_query()和任何其他可能指向正确方向的详细信息。

最新更新