>  기사  >  데이터 베이스  >  COMMIT TRANSACTION이 없으면 자동 롤백이 발생합니까?

COMMIT TRANSACTION이 없으면 자동 롤백이 발생합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-24 21:30:30339검색

Does Automatic Rollback Occur When a COMMIT TRANSACTION is Absent?

COMMIT TRANSACTION이 없는 경우 자동 롤백

트랜잭션 내에서 일련의 SQL 문을 실행할 때 의도는 원자적으로 적용되거나 전혀 적용되지 않습니다. 후속 문에서 오류가 발생하는 경우 명시적인 ROLLBACK TRANSACTION 명령 없이 트랜잭션이 자동으로 롤백되는지 여부에 대한 의문이 제기됩니다.

다음 예를 고려하십시오.

START TRANSACTION;

BEGIN;

INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000');

/** Assume that a syntax error occurs here...**/
Blah blah blah

DELETE FROM prp_property1 WHERE environment_name = 'production';

COMMIT TRANSACTION;

오류가 발생하면 트랜잭션이 자동으로 롤백된다는 오해가 있습니다.

그러나 이는 데이터베이스 시스템의 일반적인 동작이 아닙니다. 클라이언트 시행 정책이 없으면 오류가 자동으로 롤백을 트리거하지 않습니다. 대신 오류가 보고되고 트랜잭션이 열린 상태로 유지되어 사용자가 적절한 조치를 취할 수 있습니다.

제공된 예에서 구문 오류가 발생하면 삽입 문은 실패하지만 트랜잭션은 실패합니다. 롤백됩니다. DELETE 문은 계속 실행되며 데이터는 테이블에서 삭제됩니다.

이 동작은 트랜잭션을 실행하는 클라이언트나 애플리케이션에 의해 제어될 수 있습니다. 일부 클라이언트 측 도구 또는 프레임워크는 처리되지 않은 오류로 인해 롤백이 트리거되는 정책을 구현할 수 있습니다. 그러나 이는 데이터베이스 시스템의 기본 동작이 아니므로 이에 의존해서는 안 된다는 점을 기억하는 것이 중요합니다.

오류 발생 시 트랜잭션이 롤백되도록 하려면 오류 처리를 사용하거나 명시적으로 오류 발생 시 ROLLBACK TRANSACTION 명령을 실행하세요.

위 내용은 COMMIT TRANSACTION이 없으면 자동 롤백이 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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