Если у Вас в таблице есть поле с автоинкрементном (Identity), то при удалении строк из таблицы нумерация все равно продолжается с последнего числа.
Есть несколько вариантов решения этой проблемы.
1. DBCC CHECKIDENT
Это самый простой вариант, просто устанавливаете желаемое значение. Будьте осторожны, не установите значение меньше, чем последнее.
DBCC CHECKIDENT (<table name>,RESEED,<new value>)
2. Удалить и добавить поле
Это более безопасный вариант т.к. новые значения присваиваются автоматически, но требует большего количества действий и меняет порядок столбцов.
ALTER TABLE <table name> DROP CONSTRAINT <constraint name>
ALTER TABLE <table name> DROP COLUMN <column name>
ALTER TABLE <table name> ADD <column name>
bigint identity (1,1) NOT NULL
ALTER TABLE <table name> ADD CONSTRAINT <constraint name>
PRIMARY KEY CLUSTERED(<column name> ASC)WITH (PAD_INDEX = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF)
ON [PRIMARY]
3. Удалить и создать таблицу
Этот вариант устанавливает новое безопасное значение и сохраняет порядок колонок.
Создайте новую временную таблицу с такой же структурой, скопируйте все данные во временную таблицу, удалите старую таблицу и переименуйте временную.
Выбор подходящего варианта остается за вами.
2 Replies to “Как сбросить Identity в MS Sql”
пригодилось первое
Первое удобнее всего. Но хотя бы пару раз на тестовой базе попробовать не мешает