2010-12-09 3 views
2

In SQL Server 2012 (Denali) haben wir ein neues Feature Sequenz. Betrachten Sie das folgende ProgrammWas ist die wahre Notwendigkeit der Sequenz in Sql Server 2012?

/****** 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; 

Ausgabe

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

Statt dessen wir eine Identitätsspalte wie

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

verwenden können, und füllen kann wie

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

etc. Erhalten Sie die gleiche Ausgabe

Dann was zusätzlichen Nutzen wir durch die Verwendung von Sequenz erreichen?

Antwort

2

Dies kann zwischen verschiedenen Datenbanktabellen verwendet werden, sodass die ID zwischen mehreren Tabellen eindeutig ist.

Werfen Sie einen Blick auf SQL Sequences and Create Sequence of Numbers in SQL Server 2011

Ein SQL Server-Sequenzobjekt erzeugt Zahlenfolge wie ein Identitätsspalte in SQL-Tabellen. Aber die Vorteil der Sequenznummern ist die Sequenznummer Objekt ist nicht begrenzt mit einzelnen SQL-Tabelle.

+0

Ernsthaft - SQL Server erhält Sequenzen ?! SNOOPY TANZ! –

+0

Um die manuelle Erzeugung dieser Art von IDs zu vermeiden nehme ich an ... X-) –