>데이터 베이스 >MySQL 튜토리얼 >SQL Server는 일괄 명령 오류 시 전체 트랜잭션을 롤백합니까?

SQL Server는 일괄 명령 오류 시 전체 트랜잭션을 롤백합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-10 22:35:44218검색

Does SQL Server Roll Back Entire Transactions on Error in Batched Commands?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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