SQL Server 重复使用已删除的标识 PK



只是一个一般性问题。我有一个带有 IDENTITY PK 的表,它没有通过任何表连接。表中还有另一个也是唯一一个 FK。

我根据某种条件在该表上运行 DELETE 命令。

我可以使用自动插入的下一个 PK ID 将任何新记录插入到表中。

但是在PK中没有重复使用ID号。

如果我运行类似的东西

DECLARE @max_PKid BIGINT;
SET @max_PKid = (SELECT ISNULL(MAX(PKid), 0) FROM Table WHERE FKid=@somevalue);
DBCC CHECKIDENT ('Table', reseed, @max_PKid)

删除后,下一个插入时会出现访问冲突问题

问题 1:在不使用 DBCC CHECKIDET 的情况下执行删除/插入后,在表中的无序(例如,未播种)PKid 中间隔通常是好的做法吗?我应该关心他们吗?

问题2:如果没有,我该怎么办?

不,你不必担心。在其他情况下,您可能会在 IDENTITY 范围内获得"漏洞"。例如,如果启动一个事务,在表中插入 100,000 行,然后回滚该事务 - 这些 IDENTITY 值将消失。这不是你应该担心的事情。

最新更新