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

时间:2010-12-09 04:55:37

标签: 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(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)... 

等。获得相同的输出

然后我们将通过使用序列实现什么额外的好处?

1 个答案:

答案 0 :(得分:2)

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

查看SQL Sequences and Create Sequence of Numbers in SQL Server 2011

  

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