我偶然发现了这篇文章(What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?),并意识到PostgreSQL不支持无符号整数。
有人能解释一下为什么会这样吗?
大多数时候,我在MySQL中使用无符号整数作为自动递增的主键。在这种设计中,当我将数据库从MySQL移植到PostgreSQL时,如何克服这个问题呢?
谢谢。
发布于 2013-12-31 10:42:31
它不在SQL标准中,因此实现它的一般冲动较低。
拥有太多不同的整数类型会使类型解析系统更加脆弱,因此在混合中添加更多的类型会有一些阻力。
也就是说,没有理由不能做到这一点。这是一个很大的工作量。
发布于 2014-11-12 01:42:10
您可以使用CHECK约束,例如:
CREATE TABLE products (
id integer,
name text,
price numeric CHECK (price > 0)
);
此外,PostgreSQL有用于自动增量的serial
、smallserial
和bigserial
类型。
发布于 2019-01-18 02:41:02
根据最新文档,表中支持有符号整数,但没有无符号整数。然而,除了从1而不是从0开始之外,序列类型有点类似于无符号类型。但上限与signed相同。因此,该系统确实没有未签名的支持。正如Peter所指出的,实现未签名版本的大门是敞开的。代码可能需要更新很多,从我使用C编程的经验来看,有太多的工作要做。
https://www.postgresql.org/docs/10/datatype-numeric.html
integer 4 bytes typical choice for integer -2147483648 to +2147483647
serial 4 bytes autoincrementing integer 1 to 2147483647
https://stackoverflow.com/questions/20810134
复制相似问题