2013-06-26 8 views

답변

0

코드에 따라 다릅니다. 트랜잭션이 존재하는 한 모든 변경 사항은 롤백 또는 커미트가 보류됩니다.

this을 볼 수 있습니다.

0

아니요. 트랜잭션은 여전히 ​​활성 상태입니다. 결국 롤백하지 않았습니까? :) 이 예제를 실행하고 무슨 일이 일어나는 지보십시오. 거래 도중 깨면 값 2가 표에 표시되지만 롤백하거나 커밋해야합니다.

select 1 as x into #xxx 
GO 


begin transaction 

    insert into #xxx(x) select 2 
    -- ctrl+break before time runs out. 
    waitfor delay '00:00:10' 

commit transaction 


-- now try this: 
select * from #xxx 
rollback transaction 
select * from #xxx 
1

귀하의 거래는 ROLLBACK TRANSACTION 또는 COMMIT TRANSACTION 같은 것을 호출 할 때까지 열린 상태로 유지, 또는 SQL 때까지 일부 작업을 수행 할 수 있습니다.

더 많은 정보는 :

사실은 큰 업데이트 또는 수정을 테스트 할 때이 활용할 것을 좋아합니다.

-- BEGIN TRANSACTION 
-- ROLLBACK TRANSACTION 
-- COMMIT TRANSACTION 

/* 
    A bunch of SQL code here 
*/ 

그런 다음 당신은 다음의 BEGIN TRANSACTION를 실행/강조 전체 스크립트를 실행할 수 있습니다 : 당신이 뭔가를 할 수 있습니다. 결과에 만족하면 COMMIT TRANSACTION을 강조 표시하거나 실행할 수 있습니다. 그렇지 않은 경우 ROLLBACK TRANSACTION을 실행하십시오. 이러한 행은 주석 처리되었으므로 명시 적으로 강조 표시하고 실행하지 않는 한 전체 트랜잭션에 영향을 미치지 않습니다.

관련 문제