gpt4 book ai didi

sql - PostgreSQL 中一致的域/类型别名行为

转载 作者:行者123 更新时间:2023-11-29 13:07:41 24 4
gpt4 key购买 nike

我正在开发一个围绕 PostgreSQL 构建类型安全包装器的工具,并且想使用域来玩转 postgres 类型系统。示例:

CREATE DOMAIN userid AS int8;
CREATE TABLE users (
id userid NOT NULL
);
INSERT INTO users VALUES 37;

当我尝试运行任何类型的 SELECT 查询时出现问题:

SELECT * FROM users \gdesc

以上返回:

 Column |  Type   
--------+---------
id | integer

域类型彻底丢掉了!甚至以下内容:

SELECT id::userid FROM users \gdesc
SELECT CAST(id as userid) FROM users \gdesc

两者都返回相同的类型签名。我的新功能依赖于现有类型的别名,以便它可以对它们强制执行自己的任意规则,但我不确定当域信息被完全破坏时它如何工作。

最佳答案

域不会这样做。

您必须使用CREATE TYPE 创建您自己的数据类型。您将能够重用许多现有的 C 函数,但您可能必须自己编写一些 C 函数。

问题是,对于一个薄层来说,这是否值得付出努力,这可能会给现有工具和了解 PostgreSQL 的人带来很多困惑。

关于sql - PostgreSQL 中一致的域/类型别名行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59055313/

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