거래는 TRY CATCH
경계를 존중하지 않습니다. COMMIT 또는 ROLLBACK이 발생하면 트랜잭션이 닫히고 TRY 블록 내부 또는 외부에서 트랜잭션이 시작되었습니다. MSDN @
Best practice is to keep your transaction as short as posssible. With this rule, I will prefer 2nd approach.
굉장 기사 ... 추상적 인 트랜잭션을 분류, try 블록에서 발생하는 오류 ..If
는 "현재 트랜잭션의 상태가 무효화됩니다 여기에있다 일반적으로 TRY 블록 외부의 트랜잭션을 종료하는 오류로 인해 TRY 블록 내부에서 오류가 발생하면 트랜잭션은 커밋 불가능 상태가되고 커밋 할 수없는 트랜잭션은 읽기 작업 또는 ROLLBACK TRANSACTION 만 수행 할 수 있습니다. 트랜잭션은 실행할 수 없습니다 쓰기 작업을 생성하는 모든 Transact-SQL 문 예외가 try 블록 내에서 발생하는 경우 N 또는 "...
In your example 1. There is an issue
BEGIN TRAN
BEGIN TRY
-- Code here
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
COMMIT
을 트랜잭션을 COMMIT, 트랜잭션은 catch 블록에서 롤백됩니다. 이 단계가 끝나면 커밋 할 열려있는 트랜잭션이 없다는 예외가 트리거됩니다.
빠른 응답을 보내 주셔서 감사합니다. 가독성을 위해 첫 번째 옵션의 try 블록 내에서 Commit으로 이동하지만 두 번째 옵션은 구현 중입니다. – crazyDiamond