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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top