事务是否锁定更新的表

时间:2013-09-11 07:47:33

标签: sql sql-server transactions

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

例如;

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

我正在使用SQL Server 2008 RC

1 个答案:

答案 0 :(得分:1)

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

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

如果交易'A'以新的计数器值开头,Tran'B'可以在'A'提交之前跟随另一个 - 所以是 - 表可以访问。

如果你自己尝试和管理计数器(也许是为了避免差距),你将不得不应对'A'回滚但'B'承诺之前''''''''''''''''''''''''''''''''''''''''''''''''''''''会有重复。使用AutoIncrement机制可以防止这种情况,但是计数器将留下Tran'A'留下的空白。

希望这是你要解决的问题。