2

在 SQL Server 2012 (Denali) 中,我们有一个新功能Sequence。考虑下面的程序

/****** Create Sequence Object ******/
CREATE SEQUENCE GenerateSequence
START WITH 1
INCREMENT BY 1;

/****** Create a test Table ******/
Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY,
Name varchar(100) NOT NULL,
Age int NOT NULL
);

/****** Insert Some Records ******/
INSERT INTO tblTest(ID, Name, Age)
VALUES (NEXT VALUE FOR GenerateSequence, 'Name1',10),
(NEXT VALUE FOR GenerateSequence, 'Name2',20),
(NEXT VALUE FOR GenerateSequence, 'Name3',30),
(NEXT VALUE FOR GenerateSequence, 'Name4',40);

/****** Display result******/
SELECT * FROM tblTest;

输出

ID Name     Age
1  Name1    10
2  Name2    20
3  Name3    30
4  Name4    40

取而代之的是,我们可以使用一个身份列,例如

Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY Identity,
Name varchar(100) NOT NULL,
Age int NOT NULL
);

并且可以像

INSERT INTO tblTest(Name, Age)
VALUES ('Name1',10),
VALUES ('Name2',20)... 

等以获得相同的输出

那么使用序列我们将获得什么额外的好处呢?

4

1 回答 1

2

这可以在不同的数据库表之间使用,以便在多个表之间保持 ID 唯一。

查看SQL 序列并在 SQL Server 2011 中创建数字序列

SQL Server 序列对象生成数字序列,就像 sql 表中的标识列一样。但是序号的优点是序号对象不受单个sql表的限制。

于 2010-12-09T04:58:49.887 回答