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。