sql - 如何在 PostgreSQL 9.5 中为 "int"数据类型设置大小限制

标签 sql postgresql database-design sqldatatypes

我正在使用 MySQL 对来自 SQL 的 PostgreSQL 进行试验,我只是想用这段有效的 SQL 代码创建一个表:

CREATE TABLE flat_10
(
  pk_flat_id INT(30) DEFAULT 1,
  rooms      INT(10) UNSIGNED NOT NULL,
  room_label CHAR(1) NOT NULL,

  PRIMARY KEY (flat_id)
);

我得到了错误

ERROR:    syntax error at or near "("
LINE 3:   pk_flat_id integer(30) DEFAULT 1,

我在网上进行了搜索,没有找到答案,而且我似乎无法在 PostgreSQL 手册中找到答案。我做错了什么?

我明确地想限制可以插入“pk_flat_id”字段的位数

最佳答案

I explicitly want to set a limit to the number of digits that can be inserted into the "pk_flat_id" field

您当前的表定义不会以任何方式施加“大小限制”。在 MySQL 中,int 数据类型的参数只是对应用程序显示时列的显示宽度的一个提示

您可以毫无问题地将值 2147483647 存储在 int(1) 中。

如果你想限制存储在整数列中的值,你可以使用检查约束:

CREATE TABLE flat_10
(
  pk_flat_id bigint DEFAULT 1,
  rooms      integer NOT NULL,
  room_label CHAR(1) NOT NULL,

  PRIMARY KEY (flat_id), 
  constraint valid_number 
      check (pk_flat_id <= 999999999)
);

关于sql - 如何在 PostgreSQL 9.5 中为 "int"数据类型设置大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883306/

相关文章:

sql - 在 MS-Access VBA 中查询 Excel 工作表(使用 ADODB 记录集)

ruby-on-rails - 有没有办法在 Rails 中的 Postgresql 记录中强制执行 JSON 字段的模式?

sql - Postgres,plpgsql : Is there a way to connect to other DB from inside of a stored procedure?

java - hibernate - 持久化策略模式的组合接口(interface)

java - 创建多个 HSQLDB 服务器数据库的最简单方法是什么?

php - 成员(member)列表SQL查询不显示共同好友、待批好友、屏蔽好友

database - PostgreSQL 到 MySQL 数据迁移

mysql - 带有非识别键的表

mysql - 在这个 mysql 示例中是否需要一个只有一列的主表?

mysql触发ckeck约束