2009-05-11 17 views
68

(si avvicinò con questa domanda nel corso di cercare di rispondere this other one)Come inserire in una tabella con una sola colonna IDENTITY

Si consideri la seguente tabella di MS-SQL, chiamato GroupTable:

 
GroupID 
------- 
1 
2 
3 

dove GroupID è la chiave primaria ed è una colonna Identity.

Come si inserisce una nuova riga nella tabella (e quindi si genera un nuovo ID) senza utilizzando IDENTITY_INSERT ON?

Si noti che questo:

INSERT INTO GroupTable() Values() 

... non funzionerà.

modifica: stiamo parlando di SQL 2005 o SQL 2008 qui.

risposta

106

questo dovrebbe funzionare:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Non riesco a farlo funzionare con Visual Studio 2008/SQL Express 2005. Qualche idea? Stesso schema della tabella, una colonna, chiave primaria, identità (1,1). –

+0

Sto usando SQL 2008 R2, nessuna gioia neanche per me! – TDaver

+0

Funziona per me su SQL Server 2008 Express. –

0

Puoi provare a utilizzare una sequenza o qualcosa di simile? Dove selezioni da una sequenza e ti darà il prossimo valore nella sequenza.

+0

-1 Che cos'è una sequenza? Non ne ho mai sentito parlare. – Andomar

+0

Penso che stia parlando di Oracle DB – codeulike

+0

So che esistono sequenze in Oracle e non ero sicuro di quale (se esiste) cosa comparabile esisteva in SQL Server. È per questo che l'ho suffisso con "o qualcosa di simile" e poi ho dato una definizione di una sequenza per riferimento. –

17

Qui si va:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Funziona in SQL 2005/2008? Non ho di fronte a me per controllare ... – codeulike

+0

Funziona, e DJ ha dato la prima risposta corretta. – Andomar

3

E 'possibile inserire più di una riga alla volta.

Ad esempio, per inserire 30 righe. INSERISCI IN TABELLA GRUPPI VALORI PREDEFINITI GO 30

Questo inserirà 30 righe incrementando la colonna Identity ogni volta.

Problemi correlati