首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么无符号整数在PostgreSQL中不可用?

为什么无符号整数在PostgreSQL中不可用?
EN

Stack Overflow用户
提问于 2013-12-28 09:44:04
回答 3查看 86.9K关注 0票数 141

我偶然发现了这篇文章(What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?),并意识到PostgreSQL不支持无符号整数。

有人能解释一下为什么会这样吗?

大多数时候,我在MySQL中使用无符号整数作为自动递增的主键。在这种设计中,当我将数据库从MySQL移植到PostgreSQL时,如何克服这个问题呢?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-12-31 10:42:31

它不在SQL标准中,因此实现它的一般冲动较低。

拥有太多不同的整数类型会使类型解析系统更加脆弱,因此在混合中添加更多的类型会有一些阻力。

也就是说,没有理由不能做到这一点。这是一个很大的工作量。

票数 98
EN

Stack Overflow用户

发布于 2014-11-12 01:42:10

您可以使用CHECK约束,例如:

代码语言:javascript
运行
复制
CREATE TABLE products (
    id integer,
    name text,
    price numeric CHECK (price > 0)
);

此外,PostgreSQL有用于自动增量的serialsmallserialbigserial类型。

票数 46
EN

Stack Overflow用户

发布于 2019-01-18 02:41:02

根据最新文档,表中支持有符号整数,但没有无符号整数。然而,除了从1而不是从0开始之外,序列类型有点类似于无符号类型。但上限与signed相同。因此,该系统确实没有未签名的支持。正如Peter所指出的,实现未签名版本的大门是敞开的。代码可能需要更新很多,从我使用C编程的经验来看,有太多的工作要做。

https://www.postgresql.org/docs/10/datatype-numeric.html

代码语言:javascript
运行
复制
integer     4 bytes     typical choice for integer  -2147483648 to +2147483647
serial      4 bytes     autoincrementing integer    1 to 2147483647
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20810134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档