我看到这篇文章(What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?),意识到PostgreSQL不支持无符号整数.
有人能解释一下为什么会这样吗?
大多数时候,我在MySQL中使用无符号整数作为自动递增的主键.在这种设计中,当我将数据库从MySQL移植到PostgreSQL时,如何克服这个问题?
谢谢
我看到这篇文章(What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?),意识到PostgreSQL不支持无符号整数.
有人能解释一下为什么会这样吗?
大多数时候,我在MySQL中使用无符号整数作为自动递增的主键.在这种设计中,当我将数据库从MySQL移植到PostgreSQL时,如何克服这个问题?
谢谢
postgresql缺少无符号类型的原因已经得到了解答.不过,我建议对未签名类型使用域.
http://www.postgresql.org/docs/9.4/static/sql-createdomain.html
CREATE DOMAIN name [ AS ] data_type
[ COLLATE collation ]
[ DEFAULT expression ]
[ constraint [ ... ] ]
where constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression) }
域类似于类型,但有一个附加约束.
举个具体的例子
CREATE DOMAIN uint2 AS int4
CHECK(VALUE >= 0 AND VALUE < 65536);
以下是当我try 滥用类型时psql给出的结果.
DS1=# Select (346346::uint2);
错误:域uint2的值违反了判断约束"uint2\u check"