2014-07-08 4 views
1

먼저 동일한 연결을 사용하여 두 개의 트랜잭션을 만듭니다.연결과 트랜잭션 간의 관계

둘 중 하나를 롤백하면 다른 쪽이 롤백 되나요?

올바른 결과와 그 이유를 알고 싶습니다.

+1

트랜잭션은 데이터베이스가 커밋 한 기본 동작으로 생각할 수 있습니다. 트랜잭션은 연결과는 아무런 관련이 없습니다 (단 하나만 필요합니다 ...) –

답변

0

단일 ROLLBACK (저장 지점 또는 트랜잭션 이름 없음)은 모든 커밋되지 않은 트랜잭션을 롤백합니다. 은 SQL Server 온라인 설명서 (http://msdn.microsoft.com/en-us/library/ms181299.aspx)에서 관련 발췌 :

트랜잭션을 중첩,이 같은 문은 바깥 쪽 BEGIN TRANSACTION 문에 다시 모든 내부 트랜잭션을 롤백합니다.

0

연결 당 여러 트랜잭션이 존재하지 않습니다. 0 또는 하나만있을 수 있습니다. 트랜잭션을 두 번째로 열면 @@TRANCOUNT 만 증가합니다.

ROLLBACK은 트랜잭션을 롤백하고 @@TRANCOUNT을 0으로 설정합니다.

부분 롤백을 원할 경우 세이브 포인트를 사용하십시오.