postgresql - Postgres 覆盖系统函数

标签 postgresql

是否可以使用用户定义的函数覆盖 Postgres 系统函数?

我创建了一个用户定义函数“substr”,但它仅在我指定架构名称时才有效,否则它使用系统函数“substr”。

有没有办法覆盖系统函数“substr”并使用我的用户定义函数“substr”而无需使用架构名称?

原因是我希望现有代码库具有与 PG 中的 Oracle substr 相同的功能。

最佳答案

是的,您可以这样做,但您必须配置search_path,以便它在您的函数的架构之后显式包含pg_catalog:

SET search_path = myfuncs, pg_catalog;

请注意,每个人都可以更改 search_path,因此您的解决方案依赖于无人更改参数。此外,可以使用自定义 search_path 定义函数,这将覆盖您的设置。

这可能会导致与恢复 pg_dump 相结合的意外情况,这会强制 search_path 为空。我认为你的想法不是很稳健,最好明确地命名架构。

关于postgresql - Postgres 覆盖系统函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70196519/

相关文章:

postgresql - 时间总线路由的体系结构设计

sql - Postgresql 从上次更新语句中获取行列表

在一条语句中而不是两条语句中进行 SQL 更新

mysql - PostgreSQL - 查询优化或需要多个循环

postgresql - Postgres : MD5 Password/Plain password

java - 如何在 postgres 中没有时区的情况下节省时间。我正在使用 hibernate Spring MVC

postgresql - Sequelize 查询以在数组中查找 JSON 不起作用

python - 使用 SQLalchemy for PostgreSQL 去除双引号

Postgresql 日志到远程logstash 服务器

sql - postgresql 在时间序列中选择 bool 状态