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

Fla*_*Ife 5 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)
);
Run Code Online (Sandbox Code Playgroud)

我收到了错误

ERROR:    syntax error at or near "("
LINE 3:   pk_flat_id integer(30) DEFAULT 1,
Run Code Online (Sandbox Code Playgroud)

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

我明确地想要设置一个限制,可以插入到"pk_flat_id"字段中的位数

a_h*_*ame 8

我明确地想要设置一个限制,可以插入到"pk_flat_id"字段中的位数

您当前的表定义并没有以任何方式征收"大小限".在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)
);
Run Code Online (Sandbox Code Playgroud)