2011-08-30 5 views
5

Ho cercato di creare una sequenza in SQL Server 2008 utilizzando la seguente query,Impossibile creare sequenza in SQL Server 2008

CREATE SEQUENCE serial START 100 

ho ottenuto il seguente errore di sintassi,

Msg 102 , Livello 15, Stato 1, Linea 1
Sintassi non corretta vicino a "SEQUENZA".

Come creare una sequenza in SQL Server 2008?

risposta

1

Fare uso della colonna IDENTITY farà il vostro compito.

ottenere ulteriori dettagli su MSDN: IDENTITY

11

Non ci si può fare questo.

SQL Server 2008 non ha il concetto di un SEQUENCE - questo è a new feature in SQL Server 2012(MSDN documentation here).

In genere, si desidera creare una colonna di "auto-aumento" per il vostro tavolo - in questo caso, utilizzare l'attributo IDENTITY colonna invece:

CREATE TABLE dbo.YourTable 
(TableID INT IDENTITY, 
..... 
0

Come marc_s ha scritto, SQL Server 2008 non ha sequenze ancora. Ma possiamo usare qualche trucco per imitare il comportamento delle sequenze. A volte abbiamo bisogno di generare un identificatore per alcune tabelle senza inserire alcun dato. Oppure generare ID per diverse tabelle. In tale situazione io uso questa struttura.

Creare una tabella:

create table IdSequence (id int identity(1,1)) 

Poi ho utilizzare questo script per generare Id:

begin tran 
insert into IdSequence output inserted.id default values 
rollback tran 

Nella mia app Assomiglia:

public Int32 GetNextId() 
    { 
     Int32 id = 0; 
     using (var transaction = Session.BeginTransaction()) 
     { 
      id = Session.CreateSQLQuery("insert IdSequence output inserted.id default values").UniqueResult<Int32>(); 
      transaction.Rollback(); 
     } 

     return id; 
    }