2012-02-13 2 views

답변

7

문제의 COMMIT이 실제로 COMMIT하지 않는다고 생각합니다. COMMIT WORK

COMMIT [WORK] [; ]

비고

트랜잭션을 COMMIT를 제외하고 기능이 동일 트랜잭션을 커밋이 문은 사용자 정의 트랜잭션 이름을 받아들입니다. 이 COMMIT 구.은 선택적 키워드 WORK를 지정하거나 지정하지 않고 SQL-92와 호환 가능합니다.

그래서 자체 COMMITCOMMIT TRANSACTION 동일 COMMIT WORK이다. 코멘트 후 ROLLBACK [ WORK ]

에 대한
동감,

BEGIN TRANSACTION gbn 
SELECT 1 
COMMIT gbn -- fail 
GO 
BEGIN TRANSACTION gbn 
SELECT 2 
COMMIT TRAN gbn -- works 
GO 
+0

'COMMIT TRANSACTION이 사용자 정의 트랜잭션 이름을 허용한다는 것을 제외하고는 .... '오류를 생성하지만 .... 나는 그에게 트랜잭션의 이름을주지 않았다 ... 문제가된다. + 임 'WORK' 키워드에 대해 말하지 않습니다. 메신저 대 커밋에 대한 이야기. –

+0

@Royi Namir : 아니요, COMMIT는 COMMIT WORK를 의미합니다. 명명 된 트랜잭션과 아무 관련이 없습니다. 이름을 지정한 경우 사용자가 질문에 언급하지 않았습니다. 그리고 이름으로 명시 적으로'COMMIT TRANSACTION SomeName' 또는'COMMIT TRAN SomeName'을 사용해야합니다. * NOT * COMMIT 그 자체로 – gbn

+0

그래서 내가 항상 Commit을 단독으로 사용할 수있는 명명 된 트랜잭션을 사용하지 않는다면. 권리 ? –

0

중인 트랜잭션이 (적어도) 하나가 확인 IF @@TRANCOUNT > 0 목표 - 트랜잭션이 열려없이이 명령을 실행 등 모두 ROLLBACKCOMMIT 사용해야하는 경우

관련 문제