将强制转换范围仅限于PostgreSQL中的模式

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一起链接在一起。     

要回复问题请先登录注册