什么是序列号?
序列号是指在某个范围内按照一定规则依次递增的数字或字符组合,常用于数据表中的主键、唯一索引等。在日常的开发中,经常需要为数据表生成自增的序列号。
快速生成序列号的方法
在MS SQL Server数据库中,我们可以使用IDENTITY属性或SEQUENCE对象来快速生成序列号。
IDENTITY属性
IDENTITY属性是MS SQL Server中常用的生成自增序列的方法,该属性可以应用于整数数据类型的表列中,每次插入一条记录时,自动递增1,保证该列中的值都是唯一且递增的。下面是使用IDENTITY属性生成序列号的示例:
CREATE TABLE Employees
(
EmployeeID INT PRIMARY KEY IDENTITY(1,1),
EmployeeName VARCHAR(50)
)
INSERT INTO Employees(EmployeeName) VALUES('张三')
INSERT INTO Employees(EmployeeName) VALUES('李四')
INSERT INTO Employees(EmployeeName) VALUES('王五')
SELECT * FROM Employees
在上面的例子中,EmployeeID列采用了IDENTITY属性,初始值为1,每次递增1,所以插入三条记录后,EmployeeID列的值分别为1、2、3。
SEQUENCE对象
SEQUENCE对象是MS SQL Server 2012及以后版本中新增的序列号生成器,使用该对象可以生成更为灵活和高效的序列号。下面是使用SEQUENCE对象生成序列号的示例:
CREATE SEQUENCE dbo.EmployeeIDSeq
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 1000
CYCLE;
CREATE TABLE Employees
(
EmployeeID INT PRIMARY KEY DEFAULT (NEXT VALUE FOR dbo.EmployeeIDSeq),
EmployeeName VARCHAR(50)
)
INSERT INTO Employees(EmployeeName) VALUES('张三')
INSERT INTO Employees(EmployeeName) VALUES('李四')
INSERT INTO Employees(EmployeeName) VALUES('王五')
SELECT * FROM Employees
在上面的例子中,使用CREATE SEQUENCE语句创建了名为“EmployeeIDSeq”的SEQUENCE对象,初始值为1,递增值为1,最小值为1,最大值为1000,当达到最大值时循环,即超过1000后,再从1开始。并且在Employees表中的EmployeeID列中,采用DEFAULT约束来指定使用该序列来生成默认值,每次插入一条记录时,会自动从序列中获取下一个值作为该列的值,保证了该列中的值都是唯一且递增的。
小结
MS SQL Server提供了IDENTITY属性和SEQUENCE对象,两种方法都可以用来生成序列号。IDENTITY属性简单易用,但不够灵活;SEQUENCE对象可以自定义起始值、步长、最大值等属性,灵活性更强。在具体应用中,可以根据需要选择合适的方法来生成序列号。