Loading...
MySQL 9.5 Reference Manual 9.5의 15.3.4 SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
1SAVEPOINT identifier 2ROLLBACK [WORK] TO [SAVEPOINT] identifier 3RELEASE SAVEPOINT identifier
InnoDB는 SQL 구문인
SAVEPOINT,
ROLLBACK TO SAVEPOINT,
RELEASE SAVEPOINT와
ROLLBACK에 대한 선택적 WORK
키워드를 지원합니다.
SAVEPOINT 구문은
_identifier_라는 이름을 가진 명명된 트랜잭션 저장점을 설정합니다.
현재 트랜잭션에 동일한 이름의 저장점이 있으면, 기존 저장점은 삭제되고
새로운 저장점이 설정됩니다.
ROLLBACK TO SAVEPOINT 구문은
트랜잭션을 종료하지 않고 명명된 저장점까지 롤백합니다.
현재 트랜잭션이 저장점이 설정된 이후 행에 대해 수행한 변경 사항은
롤백에서 취소되지만, InnoDB는 저장점 이후에 메모리에 저장된
행 잠금을 해제하지 않습니다. (새로 insert된 행의 경우,
잠금 정보는 행에 저장된 트랜잭션 ID에 의해 유지되며,
잠금이 별도로 메모리에 저장되지 않습니다. 이 경우 행 잠금은
undo에서 해제됩니다.) 명명된 저장점 이후 시점에 설정된 저장점들은
삭제됩니다.
ROLLBACK TO SAVEPOINT 구문이
다음과 같은 오류를 반환한다면, 지정된 이름의 저장점이
존재하지 않는다는 의미입니다:
1ERROR 1305 (42000): SAVEPOINT identifier does not exist
RELEASE SAVEPOINT 구문은
현재 트랜잭션의 저장점 집합에서 명명된 저장점을 제거합니다.
커밋이나 롤백은 발생하지 않습니다.
저장점이 존재하지 않으면 오류가 발생합니다.
COMMIT을 실행하거나
저장점을 지정하지 않은
ROLLBACK을 실행하면
현재 트랜잭션의 모든 저장점이 삭제됩니다.
스토어드 함수가 호출되거나 트리거가 활성화되면 새로운 저장점 레벨이 생성됩니다. 이전 레벨의 저장점들은 사용할 수 없게 되며, 새로운 레벨의 저장점과 충돌하지 않습니다. 함수나 트리거가 종료되면, 그 안에서 생성된 모든 저장점이 해제되고 이전 저장점 레벨이 복원됩니다.
15.3.3 Statements That Cause an Implicit Commit
15.3.5 LOCK INSTANCE FOR BACKUP and UNLOCK INSTANCE Statements