sql事务是否锁定事务中更新的表?
例如;
有几个程序想要访问保存计数器值的Foo表。我想更改交易中的计数器值,如果是反转。在后续步骤中失败,然后事务回滚并且计数器值保持不变(旧值)。 在交易期间,其他程序是否可以访问Foo表?
我正在使用SQL Server 2008 RC
答案 0 :(得分:1)
关于维护计数器的问题,我建议您调查'自动增量',因为这样可以解决您正在解决的问题。
限制是您不能保证序列中没有间隙。这是因为你的第二个问题的答案。
如果交易'A'以新的计数器值开头,Tran'B'可以在'A'提交之前跟随另一个 - 所以是 - 表可以访问。
如果你自己尝试和管理计数器(也许是为了避免差距),你将不得不应对'A'回滚但'B'承诺之前''''''''''''''''''''''''''''''''''''''''''''''''''''''会有重复。使用AutoIncrement机制可以防止这种情况,但是计数器将留下Tran'A'留下的空白。
希望这是你要解决的问题。