1

我正在为 postgres 数据库做一些维护工作,一个特定的表有两个状态列,我想将它们转换为一个位掩码列。该数据库使用许多不同的存储过程进行数据操作,遗憾的是单元测试并未涵盖这些过程。

有没有办法判断这个表是否被任何存储过程在查询中使用?好吧,除了使用\df+内部的开关手动检查每个程序的主体psql

4

1 回答 1

3

可悲的是,没有。plpgsql 函数的主体只是一个在调用时保存和执行的字符串。当您创建一个函数时,只会对其运行表面的语法检查。

有时这是一种祝福。其他时候,这是一个诅咒。

在这种情况下我会做什么:转储模式并使用 vim(或 grep 或您选择的工具)搜索转储。

pg_dump $DB -p $PORT -s -f filename.pgsql

如果您的所有函数都驻留在特定模式中(相同的词,不同的含义!),请添加:-n $SCHEMA

于 2012-11-16T11:21:15.573 回答