说,如果我使用使用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命令不会混合在一起并导致竞争条件?
答案 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