【问题标题】:Do transactions lock the tables updated事务是否锁定更新的表
【发布时间】:2013-09-11 18:30:48
【问题描述】:

sql事务是否会锁定事务中更新的表?

例如;

几个程序想要访问一个保存计数器值的 Foo 表。我想更改交易中的计数器值,如果它是反式的。在后续步骤中失败,则事务回滚并且计数器值保持不变(旧值)。 在事务过程中,其他程序是否可以访问 Foo 表?

我正在使用 SQL Server 2008 RC

【问题讨论】:

标签: sql sql-server transactions


【解决方案1】:

关于维护计数器,我建议您调查“自动增量”,因为这可以解决您正在解决的问题。

限制是您不能保证序列中没有间隙。这是因为你的第二个问题的答案。

如果事务“A”以新的计数器值开始,则在“A”提交之前,事务“B”可以跟随另一个 - 所以是的 - 表是可访问的。

如果您尝试自己管理计数器(也许是为了避免空白),您将不得不应对 tran 'C' 在 'A' 回滚之后但在 'B' 提交之前出现的可能性 - 而你会有一个副本。使用 AutoIncrement 机制可以防止这种情况发生,但计数器会留有 Tran 'A' 的间隙。

希望这是您正在解决的问题。

【讨论】:

  • @Bill - 这能回答你的问题吗?
  • 是的@Hugh,你的回答对我很有帮助。非常感谢
猜你喜欢
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 2019-07-07
  • 2011-06-07
  • 1970-01-01
相关资源
最近更新 更多