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

Posted

技术标签:

【中文标题】Sql Server 2012 中序列的真正需求是啥?【英文标题】:What is the true need of sequence in Sql Server 2012?Sql Server 2012 中序列的真正需求是什么? 【发布时间】:2011-05-22 15:39:30 【问题描述】:

在 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)... 

等等。得到相同的输出

那么我们通过使用序列可以获得什么额外的好处呢?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

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

以上是关于Sql Server 2012 中序列的真正需求是啥?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 上的 Flyway 和清洁序列

sql server2012密钥 用哪个

sql server 2012序列号 注册码

SQL server 2012 数据库 序列号查看

sql server 2012提示评估期已过的解决办法 附序列号

SQL Server 2012 T-SQL 新特性