【发布时间】:2020-03-24 11:07:57
【问题描述】:
我想知道为什么下面的语法有效:
CREATE TABLE tab1(id INT,
PRIMARY KEY (id) CONSTRAINT PK_tab1
-- here the CONSTRAINT is after PRIMARY KEY def
);
CREATE TABLE tab3(id INT,
CHECK(id > 10) CONSTRAINT CHK_tab3_id
);
通常我会期望:
CREATE TABLE tab2(id INT,
CONSTRAINT PK_tab2 PRIMARY KEY (id)
);
根据文档,它似乎是无效的语法:
对于 PostgreSQL/Oracle/MySQL/SQL Server 上述语法返回错误:db<>fiddle demo PostgreSQL
这是与 DB2/Informix 的某种兼容模式吗?
【问题讨论】:
-
不相关,但您确实想使用
INTEGER,而不是INT,作为主键列类型:sqlite.org/lang_createtable.html#rowid 和sqlite.org/rowidtable.html
标签: sql sqlite create-table check-constraints