目录

SQL AUTO_INCREMENT 字段


自动增量字段

自动增量允许在将新记录插入表中时自动生成唯一的编号。

通常,这是我们希望在每次插入新记录时自动创建的主键字段。


MySQL 语法

以下 SQL 语句将 "Personid" 列定义为 "Persons" 表中的自增主键字段:

CREATE TABLE Persons (
    Personid int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (Personid)
);

MySQL 使用AUTO_INCREMENT关键字来执行自动增量功能。

默认情况下,起始值AUTO_INCREMENT为1,每增加一条记录就会加1。

为了让AUTO_INCREMENT序列以另一个值开始,使用以下 SQL 语句:

ALTER TABLE Persons AUTO_INCREMENT=100;

要将新记录插入 "Persons" 表中,我们不必为 "Personid" 列指定值(将自动添加唯一值):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');

上面的 SQL 语句会将一条新记录插入"Persons" 表中。 "Personid" 列将被分配一个唯一的值。 "FirstName" 列将设置为 "Lars","LastName" 列将设置为 "Monsen"。


SQL Server 的语法

以下 SQL 语句将 "Personid" 列定义为 "Persons" 表中的自增主键字段:

CREATE TABLE Persons (
    Personid int IDENTITY(1,1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MS SQL Server 使用IDENTITY关键字来执行自动增量功能。

在上面的例子中,起始值 IDENTITY为1,每增加一条记录就会加1。

提示:要指定 "Personid" 列应从值 10 开始并以 5 递增,请将其更改为IDENTITY(10,5)

要将新记录插入 "Persons" 表中,我们不必为 "Personid" 列指定值(将自动添加唯一值):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');

上面的 SQL 语句会将一条新记录插入"Persons" 表中。 "Personid" 列将被分配一个唯一的值。 "FirstName" 列将设置为 "Lars","LastName" 列将设置为 "Monsen"。



访问语法

以下 SQL 语句将 "Personid" 列定义为 "Persons" 表中的自增主键字段:

CREATE TABLE Persons (
    Personid AUTOINCREMENT PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MS Access 使用AUTOINCREMENT关键字来执行自动增量功能。

默认情况下,起始值AUTOINCREMENT为1,每增加一条记录就会加1。

提示:要指定 "Personid" 列应从值 10 开始并以 5 递增,请将自动增量更改为 AUTOINCREMENT(10,5)

要将新记录插入 "Persons" 表中,我们不必为 "Personid" 列指定值(将自动添加唯一值):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');

上面的 SQL 语句会将一条新记录插入"Persons" 表中。 "Personid" 列将被分配一个唯一的值。 "FirstName" 列将设置为 "Lars","LastName" 列将设置为 "Monsen"。


Oracle 语法

在 Oracle 中,代码有点棘手。

您必须使用序列对象创建一个自动增量字段(该对象生成一个数字序列)。

使用以下内容CREATE SEQUENCE语法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

上面的代码创建了一个名为 seq_person 的序列对象,它从 1 开始,并以 1 递增。它还将缓存最多 10 个值以提高性能。缓存选项指定内存中将存储多少序列值以加快访问速度。

要将新记录插入到 "Persons" 表中,我们必须使用 nextval 函数(该函数从 seq_person 序列中检索下一个值):

INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');

上面的 SQL 语句会将一条新记录插入"Persons" 表中。 "Personid" 列将被分配 seq_person 序列中的下一个数字。 "FirstName" 列将设置为 "Lars","LastName" 列将设置为 "Monsen"。