Изменение семени идентичности в SQL-сервере (постоянно!)

Есть ли какой-либо способ изменить семя идентичности для колонки идентичности постоянно? Используя DBCC CHECKIDENT просто, кажется, устанавливает last_value. Если стол усеченный, все ценности перезагружены.

dbcc checkident ('__Test_SeedIdent', reseed, 1000)

select name, seed_value, increment_value, last_value
from sys.identity_columns
where [object_id] = OBJECT_ID('__Test_SeedIdent');

прибыль

name      seed_value  increment_value  last_value
-------------------------------------------------
idIdent   1           1                1000

Я надеялся что некоторый синтаксис как

alter table dbo.__Test_SeedIdent alter column idIdent [int] identity(1000,1) NOT NULL

существовал бы.

Действительно ли необходимо создать новую колонку, преодолеть ценности, пропустить оригинальную колонку и переименовать новое?

12
задан marc_s 26 January 2010 в 16:07
поделиться

3 ответа

Из книг онлайн:

«Чтобы изменить исходное значение семян и доступ к любым существующим строкам, вы должны отбросить столбец Identity и воссоздать его, указав новое значение семени. Когда таблица содержит данные, номера идентификации добавляются в существующие строки с указанными значениями семян и приращи. Порядок обновления строк не гарантируется. "

16
ответ дан 2 December 2019 в 18:54
поделиться

»необходимо для создания нового столбца, перемещать значения по всему, отбросить исходный столбец и переименовать новое?»

на самом деле в менеджере предприятия, Когда вы добавляете столбец ID на существующую таблицу (или измените поле INT PK в INT PK ID), он делает это за сценой.

0
ответ дан 2 December 2019 в 18:54
поделиться

MSSQL не позволяет легко добавить или изменить идентификатор на существующем столбце с помощью TSQL. Вам придется отказаться от колонки и добавить ее заново. Нет необходимости говорить, что это может сыграть на руку отношениям с FK. Это можно сделать непосредственно в менеджере предприятия. Однако это не будет весело, если Вам придется сделать это с множеством столбцов.

Нужно ли создавать новый столбец, переместить значения поперек, сбросить оригинальную колонку и переименовать new?

Yup, и не забудьте исправить/обновить все индексы, внешние ключевые отношения и т.д., которые привязаны к этой колонке

.
3
ответ дан 2 December 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: