"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL에서 트랜잭션이 자동으로 롤백되지 않는 경우는 언제입니까?

SQL에서 트랜잭션이 자동으로 롤백되지 않는 경우는 언제입니까?

2024-11-07에 게시됨
검색:181

When is a Transaction Not Automatically Rolled Back in SQL?

자동 트랜잭션 롤백

질문은 START TRANSACTION 및 로 묶인 SQL 문 블록 내에서 오류가 발생할 때의 트랜잭션 동작을 중심으로 진행됩니다. 거래를 커밋합니다. OP는 COMMIT TRANSACTION 문 이전에 구문 오류가 발생하면 트랜잭션이 자동으로 롤백된다는 점을 알아차립니다.

트랜잭션 롤백 메커니즘

아니요, 트랜잭션은 롤백되지 않습니다. 오류가 발생하면 즉시 다시 돌아옵니다. 그러나 특정 클라이언트 응용 프로그램은 오류 처리를 위해 특정 정책을 채택할 수 있습니다.

예를 들어, mysql 명령줄 클라이언트에서는 다음과 같습니다.

  • 일반적으로 실행 중 오류가 발생합니다. 실행 프로세스가 중단되고 클라이언트가 종료됩니다.
  • 트랜잭션이 진행 중인 동안 종료하면 자동으로 트랜잭션이 롤백됩니다.

롤백 정책 사용자 정의

자신만의 애플리케이션을 구축할 때 트랜잭션 롤백 정책을 제어할 수 있습니다. 그러나 롤백이 시행되는 예외가 있습니다.

  1. 클라이언트 연결 끊기: 데이터베이스를 종료하거나 연결을 끊으면 항상 트랜잭션 롤백이 시작됩니다.
  2. 교착 상태/잠금 대기 시간 초과: 교착 상태 또는 잠금 대기 시간 초과가 발생하면 암시적 롤백이 발생합니다.

다른 모든 시나리오의 경우 트랜잭션 중에 오류가 발생하면 , 오류가 반환되고 개발자는 트랜잭션을 커밋하거나 삭제할 수 있습니다.

릴리스 선언문 이 글은 1729746768에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3