Как я могу заново вставить каждую строку в таблицу в SQL Server 2008? - PullRequest
0 голосов
/ 10 февраля 2012

Я добавил новый столбец идентификаторов, и мне нужно обновить его, чтобы столбец идентификаторов перешел в столбец идентификаторов, а затем удалить старый столбец идентификаторов и переименовать столбец идентификаторов, поскольку вы не можете изменить столбец на идентификатор.

Я не знаю, как это сделать, наверное, я хочу пройтись по каждой строке, вставить ее в одну и ту же таблицу, настроить поле идентификатора в соответствии с полем идентификатора (используя IDENTITY_INSERT), но я не знаком с циклами в SQL. Есть идеи?

1 Ответ

1 голос
/ 10 февраля 2012

Вы можете сделать это с помощью временной таблицы примерно так:

Пример таблицы и данных

create table xx
(
  OldID int
)

insert into xx values(10),(20),(30)

Добавьте NewID как идентификатор и получите значение из OldID.

create table xxTmp
(
  OldID int,
  [NewID] int identity
)

set identity_insert xxTmp on

insert into xxTmp(OldID, [NewID])
select OldID, OldID
from xx

set identity_insert xxTmp off

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