SQLite 表中的自动增量

Autoincrement in SQLite tables

我创建了一个 table,让我们在 SQLite 中将其命名为 CUSTOMERS

CREATE TABLE "CUSTOMERS" (
    "tel" INTEGER NOT NULL, 
    "customer" VARCHAR ,
);

当我从 GUI(我使用 Firefox 的 SQLite 管理器)看到 table 时,我注意到有一个额外的列 rowid,它的工作方式类似于自动递增。我的问题是,在我不使用主键的 table 中,我应该指定一个列,例如:

ROWID INTEGER PRIMARY KEY AUTOINCREMENT

如果我执行此查询 PRAGMA table_info(CUSTOMERS);,我只会得到两列 telcustomer

Sqlite 通常会自动添加一个 rowid 作为@laato 链接在评论 SqLite : ROWID

可以删除,但不需要指定。所以没有必要将它添加到Create Table.

隐藏的 rowid 允许删除的目标是单行,bu 如果您使用 ROWID 作为特定的外键,最好显式命名一个列。那将成为 rowid.

的同义词

您可以看到 here,正如您在问题中评论的那样。

但是,如果您在这些选项之间进退两难,SQLite 建议您不要使用 AUTOINCREMENT 属性,因为:

The AUTOINCREMENT keyword imposes extra CPU, memory, disk space, and disk I/O overhead and should be avoided if not strictly needed. It is usually not needed.

您可以阅读更多信息 here