gpt4 book ai didi

sql - 将 postgres 函数中引用的对象的模式设置为与函数本身相同

转载 作者:行者123 更新时间:2023-11-29 12:16:19 30 4
gpt4 key购买 nike

在我的 postgres 函数中,我为其中的对象(如表和其他函数)使用完全限定名称(例如 schemaname.tablename)。

但在几乎所有情况下,我指的是与函数本身的架构处于同一架构中的对象。我怎样才能让 postgres 函数知道在默认情况下使用与为其中的对象定义的模式相同的模式?

这样我就可以有一个 schema_a.myfunction 引用 mytable 但它会解析为 schema_a.mytable 和一个 schema_b.myfunction 也引用 mytable 但它会解析为 schema_b.mytable

我怎样才能这样设置呢?通过使重构和重命名模式变得容易,它确实会简化事情。我在许多模式中都有相同的表名,因此不幸的是,我必须在所有函数中使用完全限定的名称。

这意味着如果我更改模式名称之类的内容,我需要将所有出现的 schema_a. 重命名为 schema_new. 在所有 postgres 函数中。我想知道是否有更好的方法,因为有时这很容易出错(我可能会错过替换或替换我不应该拥有的东西)。

最佳答案

您可以在创建函数和使用时设置正确的search_path

CREATE FUNCTION ...
SET search_path FROM CURRENT

为此,请使用 SETsearch_path 设置为所需的架构 before 您运行 CREATE FUNCTION声明。

然后 search_path 将在函数运行期间生效。

关于sql - 将 postgres 函数中引用的对象的模式设置为与函数本身相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52394881/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com