0

只是一个普遍的问题。我有一个 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)

在 DELETE 之后,下一次 INSERT 会出现访问冲突问题

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

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

4

1 回答 1

1

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

于 2012-12-13T09:56:34.917 回答