【问题标题】:Reseed IDENTITY to First in case of ROLLBACK在 ROLLBACK 的情况下将 IDENTITY 重新设置为 First
【发布时间】:2014-01-12 18:29:23
【问题描述】:

我有在一张表中插入几行的事务。

假设:我的表的最大 ID 为 100,然后我需要再插入 100 行,其中完成时最大 ID 将为 200。其他事务等待我的事务完成,它们保留编号 201,不管我的交易是否成功完成。

回滚事务无助于将 ID 重新设置为 100,因为如果我将身份声明放在事务之外,其他事务具有更高的优先级并且它们已经保留了 201 号。

如果我的事务回滚,但在其他事务获取下一个 ID 之前,Hos 将身份列重新设置为 100?

我希望我已经足够清楚了。

【问题讨论】:

标签: sql-server transactions sql-server-2008-r2


【解决方案1】:

我认为你不应该这样做。

我不确定其他等待您完成的交易如何保留 201。他们不知道正在消耗身份;他们只知道自己被屏蔽了。

在任何情况下,ID 之间的差距都没有坏处。这就是身份的运作方式。你不应该尝试改变它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多