SQLite AUTOINCRMENT 是一个关键字,用于自动递增表中字段的值。 AUTOINCRMENT 关键字只能与 INTEGER PRIMARY KEY 字段一起使用。它可以在创建表时应用于字段。

AUTOINCRMENT 关键字会带来额外的 CPU、内存、磁盘空间和磁盘 I/O 开销,如果不是严格需要,应避免使用。通常不需要。

在 SQLite 中,类型为 INTEGER PRIMARY KEY 的列是 ROWID 的别名(WITHOUT ROWID 表除外),它始终是 64 位有符号整数。

在 INSERT 中,如果未显式给 ROWID 或 INTEGER PRIMARY KEY 列指定值,则会自动使用未使用的整数填充该列,该整数通常比当前使用的最大 ROWID 大 1。无论是否使用 AUTOINCRMENT 关键字,都是如此。

如果 AUTOINCRMENT 关键字出现在 INTEGER PRIMARY KEY 之后,则会更改自动 ROWID 分配算法,以防止在数据库的生命周期内重复使用 ROWID 。换句话说,AUTOINCRMENT 的目的是防止重复使用以前删除的行中的 ROWID。

SQLite AUTOINCRMENT 语句

下面提到的语句创建一个名为 Employee的表。 包含五列:EmpID、Name、City、Age 和 Salary 其中自动增量应用于列EmpID。

CREATE TABLE Employee (
  EmpID INTEGER PRIMARY KEY AUTOINCREMENT,
  Name VARCHAR(255),
  City VARCHAR(100),
  Age INT,
  Salary DECIMAL(18,2)
); 

插入新记录时,不应指定EmpID 。将自动添加唯一值EmpID。

INSERT INTO Employee (Name, City, Age, Salary)
VALUES ('John', 'London', 27, 2800); 

上述语句将在"Employee"表中插入一条新记录。 "EmpID"列将自动分配一个唯一值。 "Name"列将设置为"John","City"列将设置为"London","Age"列将设置为 27,"Salary"列将设置为 2800。