реструктурировать поле идентификатора в SQL Server - PullRequest
1 голос
/ 29 января 2011

У меня есть таблица с полем идентификатора int, у меня есть следующие данные

ID      Name
-------------
1       Item1
4       Item2
9       Item3
....

Я хочу изменить порядок моей личности, поданной как

1 Item1
2 Item2
3 Item3
...

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Вы не можете обновить существующее значение идентификатора.Identity_Insert предназначен только для того, чтобы вы могли указать столбец идентификаторов с новыми вставками.Лучше всего, вероятно, создать новую таблицу с таким же определением (включая столбец идентификаторов) и вставить все записи, кроме столбца идентификаторов, в новую таблицу.Затем удалите старую таблицу и переименуйте новую таблицу с помощью sp_rename.Обратите внимание, что при таком подходе вам придется отбрасывать любые внешние ключи.

0 голосов
/ 29 января 2011

Одним из ограничений столбца IDENTITY в SQL Server является то, что он не может быть обновлен напрямую.Наилучшим вариантом, вероятно, является создание новой таблицы.

В общем, если вы заботитесь о порядке значений, не используйте IDENTITY, потому что слишком сложно управлять порядком.Вместо этого используйте обычный столбец.SQL Server 2011 и далее поддерживает последовательности, которые дают вам гораздо больше контроля и не требуют, чтобы целевой столбец был только для чтения.

0 голосов
/ 29 января 2011

Один из вариантов - добавить новое целочисленное поле для хранения последовательных значений, затем включить Identity Insert для исходного столбца, а затем перенести новые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...