2013-07-01 2 views
3

Я, кажется, помню в MySQL при усечении таблицы поле с добавочным индексом автоматически увеличивалось бы там, где оно было остановлено. Таким образом, если указанная таблица была усечена с наивысшим идентификатором равным 100, следующий идентификатор после усечения будет равен 101.SQL Server продолжает идентификацию после усечения таблицы

Есть ли способ сделать это в SQL Server? Я урезал таблицу с более чем 1000 строк, но после усечения следующего нового идентификатора вернулся к 1 в моем столбце идентификации. Я бы хотел, чтобы он продолжался.

+1

В этом случае 'TRUNCATE' перезапустит ваш столбец идентификации. Если вы используете 'DELETE', то этого не произойдет – Lamak

ответ

5

DBCC CHECKIDENT (<table name>, reseed, 1000) должен сделать трюк.

Обратите внимание, что перезаполнение показано выше, будет означать, что следующий номер будет 1001, поэтому установить до 999, если вы хотите, следующий идентификатор 1000.

This article объясняет немного больше.

+0

Спасибо @GrandMasterFlush – ckpepper02

+2

Мое тестирование на MSSQL2014 показывает, что если вы засеваете его до 1000, следующая запись будет 1000, а не 1001. Это логически соответствует идентичности (1 , 1) с первым входом 1, а не 2. – Grubsnik

5

От MSDN:

Если таблица содержит столбец идентификаторов, счетчик этого столбца сбрасывается до начального значения, определенного для столбца. Если семя не было определено, используется значение по умолчанию 1. Чтобы сохранить счетчик идентификаторов, вместо этого используйте DELETE.

Если вы настроены на усечение таблицы, вы можете вручную посмотреть максимальный ID перед тем усечения, а затем повторно заполнить таблицу с помощью DBCC CHECKIDENT.

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