来自 CREATE TABLE http://www.sqlite.org/lang_createtable.html 的SQLite 文档:
使用 CREATE TABLE AS 创建的表没有 PRIMARY KEY 并且没有任何类型的约束。
那么有没有什么通用的方法来创建带有主键和其他索引信息的表?
我怀疑您错过了CREATE TABLE
和CREATE TABLE AS
(也称为CTAS)之间的区别。
CREATE TABLE AS
允许您从查询的结果集创建表。
例如:
CREATE TABLE PHILSUCKS AS ( SELECT PHIL, SUCKS FROM EGGS );
Run Code Online (Sandbox Code Playgroud)
您可以不使用 CTAS,而是使用“正常”CREATE TABLE
语句,然后INSERT
手动使用行。这允许您指定PRIMARY KEY
约束和任何约束。例如:
CREATE TABLE PHILSUCKS
(
PHIL INTEGER PRIMARY KEY,
SUCKS INTEGER NOT NULL
);
INSERT INTO PHILSUCKS ( SELECT PHIL, SUCKS FROM EGGS );
Run Code Online (Sandbox Code Playgroud)
显然,您也可以创建索引等:
CREATE INDEX EGGSUCKING ON PHILSUCKS (SUCKS);
Run Code Online (Sandbox Code Playgroud)
希望有帮助!