4

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

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

谢谢,汤姆

4

2 回答 2

4

是的。

set identity_insert YourTable on
insert YourTable (YourID, OtherField) values ( ... 
set identity_insert YourTable off
于 2012-09-19T13:48:49.677 回答
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

无论如何,如果没有反对意见,我建议在一张桌子上使用旗帜。

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

于 2012-09-19T13:53:52.730 回答