Sql Server 2012中对序列的真正需求是什么?

Sql Server 2012中对序列的真正需求是什么?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,在SQL Server 2012(Denali)中,我们有一个新功能序列。考虑下面的程序 /****** 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(10

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

/****** 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)... 
等,以获得相同的输出


那么使用sequence还有什么额外的好处呢?

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

看看

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


说真的-SQL Server正在获取序列?!史努比舞!为了避免手动生成这些类ID,我假设。。。X-)