如何在 SQLite 中使用 CREATE TABLE ... AS 和主键

Gea*_*Lin 6 sqlite

来自 CREATE TABLE http://www.sqlite.org/lang_createtable.html 的SQLite 文档:

使用 CREATE TABLE AS 创建的表没有 PRIMARY KEY 并且没有任何类型的约束。

那么有没有什么通用的方法来创建带有主键和其他索引信息的表?

Phi*_*lᵀᴹ 8

我怀疑您错过了CREATE TABLECREATE 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)

希望有帮助!