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

等待获得相同的输出

那么,我们将使用序列实现什么额外的良好性?

有帮助吗?

解决方案

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

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

SQL Server序列对象像SQL表中的身份列一样生成数字序列。但是序列数的优点是序列号对象不限于单个SQL表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top