2009-05-11 16 views
68

(wpadł na to pytanie w trakcie próbując odpowiedzieć this other one)Jak wstawić do tabeli z tylko jedną kolumnę IDENTITY

Rozważmy następującą tabelę MS-SQL, zwany grouptable:

 
GroupID 
------- 
1 
2 
3 

gdzie GroupID jest kluczem podstawowym i jest kolumną tożsamości.

Jak wstawić nowy wiersz do tabeli (i tym samym wygenerować nowy identyfikator) bez przy użyciu IDENTITY_INSERT WŁĄCZONY?

Należy zauważyć, że w ten sposób:

INSERT INTO GroupTable() Values() 

... przyzwyczajenie praca.

edytuj: mówimy o SQL 2005 lub SQL 2008 tutaj.

Odpowiedz

106

To powinno działać:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Nie mogę uzyskać tego do pracy z Visual Studio 2008/SQL Express 2005. Wszelkie pomysły? Taki sam układ tabeli, jedna kolumna, klucz podstawowy, tożsamość (1,1). –

+0

Używam SQL 2008 R2, nie ma dla mnie żadnej radości! – TDaver

+0

Działa dla mnie na SQL Server 2008 Express. –

0

Czy możesz spróbować użyć Sekwencji lub czegoś podobnego? Tam, gdzie wybierasz z Sekwencji, a otrzymasz kolejną wartość w sekwencji.

+0

-1 Co to jest sekwencja? Nigdy nie słyszałem o tym. – Andomar

+0

Myślę, że on mówi o Oracle DB – codeulike

+0

Wiem, że sekwencje istnieją w Oracle i nie był pewien, co (jeśli w ogóle) porównywalne rzeczy istniały w SQL Server. Dlatego dodałem do niego "lub coś podobnego", a następnie dałem definicję Sekwencji dla odniesienia. –

17

Proszę bardzo:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Czy to działa w SQL 2005/2008? Nie mam tego przed sobą, aby sprawdzić ... – codeulike

+0

To działa, a DJ dał pierwszą poprawną odpowiedź. – Andomar

3

Jest możliwe, aby wstawić więcej niż jeden wiersz naraz.

Na przykład, aby wstawić 30 wierszy. WSTAW DO WARTOŚCI DOMYŚLNEJ ZEZWOLONEJ Grupą GO 30

Spowoduje to wstawienie 30 wierszy po zwiększeniu kolumny tożsamości za każdym razem.

Powiązane problemy