将带有id的行插入到自动递增的表中

时间:2012-09-19 13:47:39

标签: sql sql-server sql-server-2008-r2 auto-increment

我想知道是否可以将一行“重新插入”到Id列上自动递增的表中。我有一个“未处理”表和一个“已处理”表,“未处理”表有自动增量,当它们被处理时,它们移动到“已处理”表并保持相同的ID。一行可能会移回“未处理”,因此我需要能够再次使用相同的ID“重新插入”此行。为了防止我不清楚,我从问题的定义中知道Ids之间永远不会发生碰撞。

此外,这是在SQL Server 2008 R2上完成的

谢谢, 汤姆

2 个答案:

答案 0 :(得分:4)

set identity_insert YourTable on
insert YourTable (YourID, OtherField) values ( ... 
set identity_insert YourTable off

答案 1 :(得分:4)

是的,这是可能的,您只需在INSERT语句中提供具有所需值的ID列,并首先为所需的表启用“set identity_insert”(然后为安全性禁用它)

这就是这个(伪代码):

INSERT #1 --created id 1
INSERT #2 --created 2
INSERT #3 -- created 3
DELETE 2 --2 gone, leaves a gap
set identity_insert your_table on
INSERT VALUES ( 2, ... ) -- filled gap again
set identity_insert your_table off

无论如何,我建议在一张桌子上使用一个标志,如果没有任何说话的话。

所以你可以简单地翻转旗帜,你将永远不必挣扎/确保你的ids