Qual è il vero bisogno di sequenza in SQL Server 2012?
-
10-10-2019 - |
Domanda
In SQL Server 2012 (Denali), disponiamo di una nuova funzione Sequenza . Si consideri il seguito del programma
/****** 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;
Output
ID Name Age
1 Name1 10
2 Name2 20
3 Name3 30
4 Name4 40
Al posto di questo si può utilizzare una colonna di identità come
Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY Identity,
Name varchar(100) NOT NULL,
Age int NOT NULL
);
: e può compilare come
INSERT INTO tblTest(Name, Age)
VALUES ('Name1',10),
VALUES ('Name2',20)...
ecc. per ottenere lo stesso risultato
E allora che benifit extra che raggiungerà utilizzando la sequenza?
Soluzione
Questo può essere utilizzato tra le diverse tabelle del database, in modo che esso mantiene l'ID univoco tra più tabelle.
Date un'occhiata al SQL Successioni e Crea sequenza di numeri in SQL Server 2011
Un oggetto sequenza di SQL Server genera sequenza di numeri proprio come un colonna di identità in tabelle SQL. Ma il vantaggio del numero di sequenza è il oggetto numero di sequenza non è limitato con tavolo sql singola.