最新的Web开发教程
 

SQL自动增量字段


自动递增允许当一个新的记录被插入到表中产生一个唯一的数字。


自动递增一个Field

我们常常想每一个新的记录被插入时被自动创建的主键字段的值。

我们愿在一个表中创建一个自动递增字段。


语法的MySQL

下面的SQL语句定义了"ID"列是在一个自动增加的主键字段"Persons"表:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

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

缺省情况下,AUTO_INCREMENT起点值是1,并且它将由1为每个新的记录递增。

要让AUTO_INCREMENT序列以其他值开始,使用下面的SQL语句:

ALTER TABLE Persons AUTO_INCREMENT=100

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

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

上面的SQL语句将插入一个新的记录插入到"Persons"表。 在"ID"栏将被分配一个唯一的值。 在"FirstName"栏将被设置为"Lars""LastName"栏将被设置为"Monsen"


语法为SQL Server

下面的SQL语句定义了"ID"列是在一个自动增加的主键字段"Persons"表:

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

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

在上面的例子中,对于IDENTITY起点值是1,并且它将由1为每个新的记录递增。

提示:要指定"ID"列以20为值10,增量开始,将其更改为IDENTITY(10,5)。

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

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

上面的SQL语句将插入一个新的记录插入到"Persons"表。 在"ID"栏将被分配一个唯一的值。 在"FirstName"栏将被设置为"Lars""LastName"栏将被设置为"Monsen"


语法访问

下面的SQL语句定义了"ID"列是在一个自动增加的主键字段"Persons"表:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

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

缺省情况下,自动增量的开始值是1,并且它将由1为每个新的记录递增。

提示:要指定"ID"列以20为值10,增量入手,改变自动增量AUTOINCREMENT(10,5)。

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

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

上面的SQL语句将插入一个新的记录插入到"Persons"表。 在"P_Id"栏将被分配一个唯一的值。 在"FirstName"栏将被设置为"Lars""LastName"栏将被设置为"Monsen"


语法甲骨文

在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 (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

上面的SQL语句将插入一个新的记录插入到"Persons"表。 在"ID"列将被分配来自seq_person序列的下一个数字。 在"FirstName"栏将被设置为"Lars""LastName"栏将被设置为"Monsen"