如何在SQL Server 2008中的表中插入每一行?

时间:2012-02-10 11:05:08

标签: sql-server-2008

我添加了一个新的标识列,我需要更新它以便id列进入标识列,然后删除旧标识列并重命名标识列,因为您无法将列更改为标识。 / p>

我不知道怎么做,我想我想循环遍历每一行,将其插入到同一个表中,设置identity字段以匹配id字段(使用IDENTITY_INSERT)但我不熟悉循环在SQL中。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以使用像这样的临时表:

样本表和数据

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'