gpt4 book ai didi

Postgresql: "public."是在 Postgresql 中完全限定表名的标准方法吗?

转载 作者:行者123 更新时间:2023-11-29 12:34:32 25 4
gpt4 key购买 nike

如果我不符合“公众”的条件。在 account_category 表上,out account_category 将与 account_category 表名称发生冲突。

是否“公开”。也适用于其他 rdbms?

CREATE OR REPLACE FUNCTION X_RAIN(x VARCHAR, OUT user_id VARCHAR, out account_category varchar, out depth int) returns setof record
AS
$$
BEGIN
return query
select uar.account_id, c.account_category, c.depth
from account_with_types_chart_of_account uar
inner join public.account_category c using(account_category_id);
END;
$$ LANGUAGE 'plpgsql';

最佳答案

关于PostgreSQL中的public,当没有指定模式名时,public被定义为默认的模式名。但是,这可以在 postgresql.conf 文件中的 search_path = xxx 行中更改。要查看您当前的默认模式设置为发出以下 SQL 命令:

SHOW_ search_path;

如果您想在打开的查询 session 中更改默认架构路径,请发出以下 SQL 命令:

SET search_path = new_path;

但是,在您发布的示例中,我认为您遇到的命名冲突不是架构名称,而是函数参数名称 account_category 和表名称account_category。您可以重命名参数名称以避免此冲突。在具有许多模式的数据库中,为了清楚起见,我经常在数据库对象名称的开头明确指定 public。

关于你的第二个问题,我不认为 PostgreSQL 在使用 public 方面是独一无二的,但我知道许多其他数据库以不同的方式执行它们的模式。

关于Postgresql: "public."是在 Postgresql 中完全限定表名的标准方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/766698/

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