집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 트랜잭션의 예외에 대한 자동 롤백을 어떻게 구현할 수 있습니까?
MySQL 트랜잭션 처리: 예외 롤백
MySQL의 맥락에서 트랜잭션은 다음과 같이 실행되는 일련의 데이터베이스 작업을 포함합니다. 단일 논리 유닛. 기본적으로 트랜잭션 내의 명령 중 하나라도 오류가 발생하면 전체 트랜잭션이 롤백되어 데이터 무결성이 보장됩니다. 그러나 롤백 동작을 명시적으로 제어하려는 상황이 있습니다.
모든 예외에 대해 자동화된 롤백을 달성하는 한 가지 방법은 MySQL의 DECLARE ... HANDLER 구문을 사용하는 것입니다. 이를 통해 사용자는 트랜잭션 실행 중에 SQLEXCEPTION이 발견될 경우 실행되는 핸들러 함수를 지정할 수 있습니다.
이 작동 방식을 보여주기 위해 다음 예를 고려하십시오.
DELIMITER $$ CREATE PROCEDURE `sp_fail`() BEGIN DECLARE `_rollback` BOOL DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1; START TRANSACTION; INSERT INTO `tablea` (`date`) VALUES (NOW()); INSERT INTO `tableb` (`date`) VALUES (NOW()); INSERT INTO `tablec` (`date`) VALUES (NOW()); -- FAIL IF `_rollback` THEN ROLLBACK; ELSE COMMIT; END IF; END$$ DELIMITER ;
이 절차에서 , 오류가 발생한 경우 플래그를 지정하기 위해 _rollback 변수를 선언합니다. SQLEXCEPTION이 발견될 때 이 플래그를 1로 설정하도록 핸들러가 정의됩니다. 그런 다음 트랜잭션 내에서 원하는 데이터베이스 작업을 실행합니다. 모든 작업이 시도된 후 _rollback 플래그를 확인하고 오류가 발생한 경우에만 ROLLBACK을 발행합니다. 그렇지 않으면 트랜잭션을 커밋합니다.
이 기술을 사용하면 트랜잭션 수준 오류가 롤백을 트리거하여 데이터베이스를 일관된 상태로 유지하는 원하는 동작을 유지하도록 할 수 있습니다.
위 내용은 MySQL 트랜잭션의 예외에 대한 자동 롤백을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!