在 Postgres 中,如何在更改表后重新验证(“类型检查”)函数和过程?

Posted

技术标签:

【中文标题】在 Postgres 中,如何在更改表后重新验证(“类型检查”)函数和过程?【英文标题】:In Postgres, how do I re-validate ("type-check") functions and procedures after tables are altered? 【发布时间】:2021-01-31 02:04:54 【问题描述】:

在 Postgres 中,函数在创建时进行验证:例如,访问不存在的列会导致一个有用的错误,甚至在函数运行之前。但是更改表并不能验证与函数定义的一致性,即删除某个函数使用的列不会导致错误。是否有任何方法可以重新运行在创建时已应用于函数的相同验证,而无需删除并重新创建每个函数?

【问题讨论】:

【参考方案1】:

没有内置任何东西,但是有一个扩展可以做到这一点:

plpgsql_check

来自项目的自述文件:

特点

检查嵌入式 SQL 中引用的数据库对象和类型的字段 使用正确类型的函数参数 未使用的变量和函数参数,未修改的 OUT 参数 部分检测到死代码(由于 RETURN 命令) 检测到函数中缺少 RETURN 命令 尝试识别不需要的隐藏强制转换,这可能是未使用索引等性能问题 可以收集函数使用的关系和函数 可以检查 EXECUTE stmt 以防止 SQL 注入漏洞

【讨论】:

以上是关于在 Postgres 中,如何在更改表后重新验证(“类型检查”)函数和过程?的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server Management Studio 中编辑表后保存更改

从数据库中删除所有表后,如何将 prisma 重新部署到数据库

重新链接表后重新查询表单

在Postgres中加入两个表后如何为具有相同名称的列提供别名

重新创建父表后如何在 SQLite 中重新设置表 FOREIGN KEY

Postgres 和 Docker 在文件更改时重新部署