gpt4 book ai didi

postgresql - 将转换范围仅限制为 PostgreSQL 中的模式

转载 作者:行者123 更新时间:2023-11-29 14:02:23 25 4
gpt4 key购买 nike

Funambol 在其管理文档中指出,要在对类型和转换更严格的较新的 PostgreSQL 实例上运行,您必须添加这些转换:

CREATE FUNCTION pg_catalog.text(bigint) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int8out($1));';
CREATE CAST (bigint AS text) WITH FUNCTION pg_catalog.text(bigint) AS IMPLICIT;
CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';
CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;

问题是在同一个数据库中(在 PostgreSQL 术语中)我还有其他模式,这些模式由于这些转换而被应用程序破坏(带有“运算符不是唯一的:未知 || 整数”并提示“无法选择最佳候选人运算符。您可能需要添加显式类型转换。”),而它们之前可以工作。

因此,一种解决方案当然是定义额外的数据库,并且其中只有 Funambol。但我想知道是否有一种方法可以定义这些强制转换,以便它们仅在 Funambol 的架构中生效,而不是在整个数据库中生效。

最佳答案

不,这不可能是你想象的那样。转换由源类型和目标类型标识,因此如果这两种类型都是内置类型之一,则数据库的所有用户都将看到它们之间的相同转换。该行的唯一解决方法是创建内置数据类型的克隆,但不要去那里。 ;-)

因此,您要么需要使用 Funambol 寻求修复,要么将您的应用程序分离到不同的数据库中,并可能使用 dblink 之类的东西将它们重新链接在一起。

关于postgresql - 将转换范围仅限制为 PostgreSQL 中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744487/

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