【问题标题】:SQL Server and a possible race conditionSQL Server 和可能的竞争条件
【发布时间】:2011-11-12 19:09:11
【问题描述】:

假设我使用 ASP.NET 编写了一个使用 SQL Server 数据库的网站。我的脚本执行如下操作:

-- 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 执行命令不会混合在一起并导致竞争条件?

【问题讨论】:

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


    【解决方案1】:

    不,除非你在交易中包装:

    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
    

    【讨论】:

      【解决方案2】:

      除非您明确锁定表,否则我不会这样认为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 2013-04-13
        • 2013-05-06
        • 2010-10-30
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多