自动递增允许当一个新的记录被插入到表中产生一个唯一的数字。
自动递增一个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" 。