집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server는 일괄 명령 오류 시 전체 트랜잭션을 롤백합니까?
SQL Server 트랜잭션 처리: 오류 롤백 동작
여러 SQL 문을 단일 배치 명령으로 실행할 때는 데이터베이스의 트랜잭션 동작을 고려해야 합니다. 특히 하나 이상의 명령문에 오류가 발생하면 전체 트랜잭션을 롤백해야 합니까?
SQL Server에서 기본 동작은 오류 발생 시 전체 트랜잭션을 롤백하는 것입니다. 그러나 일부 경우(예: 질문에 제공된 예):
<code class="language-sql">BEGIN TRAN; INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); COMMIT TRAN;</code>
SQL 문이 단일 문자열 명령으로 전송되는 경우 롤백 동작이 예상과 다를 수 있습니다.
실패한 문이 자동으로 롤백을 트리거하도록 하려면 트랜잭션을 시작하기 전에 SET XACT_ABORT ON
문을 사용할 수 있습니다. 이 명령은 오류가 발생하면 즉시 트랜잭션이 롤백되도록 세션의 트랜잭션 동작을 수정합니다. 이 경우 삽입 작업이 되돌려지고 트랜잭션이 성공적으로 완료되지 않습니다.
XACT_ABORT ON
을 명시적으로 설정하면 오류 발생 시 데이터베이스가 일관되게 작동하여 데이터 무결성을 보장하고 실수로 인한 변경을 방지할 수 있습니다. 이 설정은 현재 세션에만 적용되며 후속 트랜잭션에는 영향을 미치지 않는다는 점에 유의할 가치가 있습니다.
위 내용은 SQL Server는 일괄 명령 오류 시 전체 트랜잭션을 롤백합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!