MySQL 트랜잭션의 SavePoints는 트랜잭션 내의 특정 지점입니다. 트랜잭션에 대한보다 세분화 된 제어를 제공하기 위해 설정할 수 있습니다. 전체 거래가 아닌 거래의 일부만 롤백 해야하는 경우 반환 할 수있는 마커 또는 체크 포인트 역할을합니다. 저장 포인트를 사용하면 복잡한 트랜잭션을 더 작고 관리 가능한 세그먼트로 분류하여 효과적으로 관리 할 수 있습니다. 이 기능은 다른 사람을 그대로 유지하면서 거래 내의 특정 조치를 되돌릴 수있는 시나리오에서 특히 유용합니다.
MySQL에서는 SAVEPOINT
문과 고유 식별자를 사용하여 SavePoint를 만듭니다 SAVEPOINT savepoint_name;
. SavePoint가 설정되면 SavePoint가 설정되기 전에 수행 된 작업에 영향을 미치지 않고 필요한 경우 롤백을 할 수 있습니다.
SavePoints는 몇 가지 중요한 방법으로 MySQL의 트랜잭션 관리를 향상시킵니다.
MySQL 트랜잭션에서 SavePoints를 사용하기위한 모범 사례는 다음과 같습니다.
예, MySQL의 SavePoints를 롤백 할 수 있습니다. SavePoint로 롤백하려면 ROLLBACK TO
명령문과 SavePoint 이름을 사용하여 ROLLBACK TO savepoint_name;
. 이 명령은 SavePoint가 설정된 후 모든 변경 사항을 취소하여 SavePoint에있는 상태로 거래를 효과적으로 반환합니다.
SavePoint로 롤백하는 것이 트랜잭션을 종료하지는 않습니다. 트랜잭션은 계속 활성화되며 추가 작업을 계속 수행하거나 새로운 저장 포인트를 설정하거나 거래를 완전히 커밋 할 수 있습니다.
예를 들어, 여러 레코드를 삽입하고 SavePoint를 설정 한 다음 다른 레코드를 삽입하는 트랜잭션을 고려하십시오. 마지막 삽입이 실패하면 SavePoint로 롤백 한 다음 실패한 작업을 재 시도 할 것인지 또는 거래를 진행하는지 결정할 수 있습니다.
간단한 예는 다음과 같습니다.
<code class="sql">START TRANSACTION; INSERT INTO table1 VALUES (1, 'Record 1'); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2, 'Record 2'); -- Assume the next insertion fails INSERT INTO table1 VALUES (3, 'Record 3'); ROLLBACK TO my_savepoint; -- At this point, only 'Record 1' is inserted -- You can now decide to retry the insertion or proceed to commit COMMIT;</code>
이 예에서 my_savepoint
로 롤백하면 '레코드 2'및 '레코드 3'의 삽입을 취소하고 표에 '레코드 1'만 남겨 둡니다.
위 내용은 MySQL 트랜잭션의 저장 포인트는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!