2011-11-12 2 views
0

SQL Server 데이터베이스를 사용하는 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 실행 명령이 함께 혼합되어 경쟁 조건이 발생하지 않도록 보장합니까?

답변

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 
0

explicetly 테이블을 잠그지 않는다면 그렇게 생각하지 않을 것입니다.