2009-05-11 5 views
68

(Придумал этот вопрос в ходе попыток ответить this other one)Как вставить в таблицу с помощью только одного IDENTITY столбца

Рассмотрим следующий MS-SQL таблицу, называется GroupTable:

 
GroupID 
------- 
1 
2 
3 

где GroupID является первичным ключом и является столбцом Identity.

Как вы вставляете новую строку в таблицу (и, следовательно, генерируете новый идентификатор) без с использованием IDENTITY_INSERT ON?

Обратите внимание, что это:

INSERT INTO GroupTable() Values() 

... не будет работать.

Редактировать: мы говорим о SQL 2005 или SQL 2008 здесь.

ответ

106

Это должно работать:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Я не могу заставить это работать с Visual Studio 2008/SQL Express 2005. Любые идеи? Та же таблица, один столбец, первичный ключ, идентификатор (1,1). –

+0

Я использую SQL 2008 R2, без радости для меня! – TDaver

+0

Работает для меня на SQL Server 2008 Express. –

0

Можете ли вы попробовать использовать последовательность или что-то подобное? Где вы выбираете из последовательности, и он даст вам следующее значение в последовательности.

+0

-1 Что такое последовательность? Никогда не слышал об этом. – Andomar

+0

Я думаю, что он говорит о Oracle DB – codeulike

+0

Я знаю, что последовательности существуют в Oracle и не были уверены, что (если есть) сопоставимые вещи существовали в SQL Server. Вот почему я суффикс его с «или что-то подобное», а затем дал определение последовательности для справки. –

17

Здесь вы идете:

INSERT INTO GroupTable DEFAULT VALUES 
+0

Это работает в SQL 2005/2008? У меня нет этого для меня, чтобы проверить ... – codeulike

+0

Это действительно работает, и DJ дал первый правильный ответ. – Andomar

3

можно вставить более одной строки за один раз.

Например, для вставки 30 строк. INSERT INTO GroupTable DEFAULT VALUES GO 30

Это будет вставлять 30 строк, увеличивая количество столбцов идентификации каждый раз.

Смежные вопросы