我想知道是否可以将一行“重新插入”回在 Id 列上具有自动增量的表中。我有一个“未处理”表和一个“已处理”表,“未处理”具有自动增量,当它们被处理时,它们移动到“已处理”表并保持相同的 ID。一行可能会移回“未处理”,因此我需要能够再次“重新插入”具有相同 ID 的该行。以防万一我不清楚,我从问题的定义中知道 Id 之间永远不会发生冲突。
此外,这是在 SQL Server 2008 R2 上完成的
谢谢,汤姆
我想知道是否可以将一行“重新插入”回在 Id 列上具有自动增量的表中。我有一个“未处理”表和一个“已处理”表,“未处理”具有自动增量,当它们被处理时,它们移动到“已处理”表并保持相同的 ID。一行可能会移回“未处理”,因此我需要能够再次“重新插入”具有相同 ID 的该行。以防万一我不清楚,我从问题的定义中知道 Id 之间永远不会发生冲突。
此外,这是在 SQL Server 2008 R2 上完成的
谢谢,汤姆
是的。
set identity_insert YourTable on
insert YourTable (YourID, OtherField) values ( ...
set identity_insert YourTable off
是的,这是可能的,您只需在 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
无论如何,如果没有反对意见,我建议在一张桌子上使用旗帜。
所以你可以简单地翻转旗帜,你永远不必挣扎/确保你的身份