>  기사  >  데이터 베이스  >  SQL에서 트랜잭션이 자동으로 롤백되지 않는 경우는 언제입니까?

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

Susan Sarandon
Susan Sarandon원래의
2024-10-25 07:49:28994검색

When is a Transaction Not Automatically Rolled Back in SQL?

자동 트랜잭션 롤백

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

트랜잭션 롤백 메커니즘

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

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

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

롤백 정책 사용자 정의

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

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

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

위 내용은 SQL에서 트랜잭션이 자동으로 롤백되지 않는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.