보존 지점 사용
간단한 ROLLBACK 및 COMMIT 문은 전체 트랜잭션을 쓰거나 실행 취소할 수 있습니다. 그러나 이는 단순한 트랜잭션에만 가능합니다. 더 복잡한 트랜잭션에는 부분 커밋 또는 롤백이 필요할 수 있습니다.
예를 들어 앞서 설명한 주문을 추가하는 과정이 거래입니다. 오류가 발생하면 주문 행을 추가하기 전으로 돌아가세요. 고객 테이블(존재하는 경우)로 돌아갈 필요가 없습니다.
트랜잭션의 일부 롤백을 지원하려면 자리 표시자를 트랜잭션 블록의 적절한 위치에 배치해야 합니다. 이렇게 하면 롤백해야 하는 경우 자리 표시자로 돌아갈 수 있습니다.
이러한 자리 표시자를 보존 지점이라고 합니다. 자리 표시자를 생성하려면 다음과 같이 SAVEPOINT 문을 사용합니다.
Enter:
savepoint deletel;
각 저장 지점은 롤백할 때 MySQL이 롤백할 위치를 알 수 있도록 이를 식별하는 고유한 이름을 갖습니다. . 이 예에 제공된 보존 지점으로 돌아가려면 다음과 같이 진행하십시오.
Enter:
rollback to deletel;
보존 지점이 많을수록 원하는 만큼 많은 보존 지점을 설정할 수 있습니다. MySQL 코드가 많을수록 더 좋습니다. 왜? 보존 지점이 많을수록 원하는 대로 롤백할 수 있는 유연성이 높아집니다.
보존 지점 해제 트랜잭션이 완료된 후(ROLLBACK 또는 COMMIT 실행) 유지 지점이 자동으로 해제됩니다. MySQL 5부터는 RELEASESAVEPOINT를 사용하여 보유 지점을 명시적으로 해제하는 것도 가능합니다.
기본 커밋 동작 변경
설명된 대로 기본 MySQL 동작은 모든 항목을 자동으로 커밋하는 것입니다. 변화. 즉, MySQL 문을 실행할 때마다 해당 문이 실제로 테이블에 대해 실행되고 변경 사항이 즉시 적용됩니다. MySQL이 변경 사항을 자동으로 커밋하지 않도록 지시하려면 다음 명령문을 사용해야 합니다.
입력:
set autocommit = 0;
분석: autocommit 플래그는 변경 사항이 있는지 여부에 관계없이 변경 사항을 자동으로 커밋할지 여부를 결정합니다. COMMIT 문. autocommit을 0(false)으로 설정하면 MySQL은 변경 사항을 자동으로 커밋하지 않습니다(autocommit이 true로 설정될 때까지).
플래그는 연결에 따라 다릅니다. 자동 커밋 플래그는 서버가 아닌 각 연결에 대한 것입니다.
[관련 추천]
2. MySQL 트랜잭션-ROLLBACK, COMMIT 사용법에 대한 자세한 설명
4. MySQL UPDATE 트리거(업데이트) 및 트리거 심층 분석
5. MySQL 삭제 트리거(삭제) 사용법에 대한 자세한 설명
위 내용은 보존 지점 사용 및 기본 커밋 동작 변경에 대한 MySQL 트랜잭션 세부 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!