SQL Server和可能的竞争条件

时间:2011-11-12 10:51:59

标签: asp.net sql sql-server race-condition

说,如果我使用使用SQL Server数据库的ASP.NET编写网站。我的脚本执行类似这样的事情:

-- The meaning of the SQL doesn't matter
UPDATE t1 SET [c1]=1 WHERE [id]=3;
UPDATE t1 SET [c2]=0 WHERE [id]=4;
UPDATE t1 SET [c1]=2 WHERE [id]=7;

当上面的SQL运行时,另一个用户登录到同一页面并同时运行相同的SQL脚本。 SQL Server是否确保多个同时执行的SQL命令不会混合在一起并导致竞争条件?

2 个答案:

答案 0 :(得分:0)

除非你明确地锁定表格,否则我不会这么认为。

答案 1 :(得分:0)

不,除非你包装交易:

BEGIN TRANSACTION
  UPDATE t1 SET [c1]=1 WHERE [id]=3; 
  UPDATE t1 SET [c2]=0 WHERE [id]=4; 
  UPDATE t1 SET [c1]=2 WHERE [id]=7; 
COMMIT