MySQL은 저장점을 사용하여 중첩 트랜잭션을 어떻게 처리합니까?

Patricia Arquette
풀어 주다: 2024-11-28 03:50:22
원래의
574명이 탐색했습니다.

How Does MySQL Handle Nested Transactions Using Savepoints?

MySQL의 중첩 트랜잭션

다른 특정 데이터베이스 관리 시스템과 달리 MySQL은 기본적으로 중첩 트랜잭션을 지원하지 않습니다. 이는 기존 트랜잭션 내에서 새 트랜잭션을 생성할 수 없음을 의미합니다. 그러나 MySQL에서 사용되는 널리 사용되는 스토리지 엔진인 MySQL InnoDB는 저장점을 사용하여 중첩된 트랜잭션과 같은 동작을 관리하기 위한 솔루션을 제공합니다.

SAVEPOINTS in InnoDB

저장점을 사용하면 트랜잭션 내에서 임시 마일스톤을 생성할 수 있습니다. 저장점을 만들고 이름을 지정한 다음 해당 저장점으로 롤백하여 이후에 발생한 모든 작업을 실행 취소할 수 있습니다. 이는 중첩된 트랜잭션과 유사한 수준의 세분성과 유연성을 제공합니다.

SAVEPOINT 사용 방법

MySQL에서 저장점을 사용하려면 다음 단계를 따르세요.

  1. START TRANSACTION을 사용하여 거래를 시작하세요.
  2. SAVEPOINT 명령을 사용하여 저장점을 생성합니다. tran2와 같은 의미 있는 이름을 지정합니다.
  3. 저장점 내에 포함하려는 작업을 수행합니다.
  4. 저장점으로 롤백하려면 ROLLBACK TO 명령과 저장점 이름을 차례로 사용합니다.
  5. 전체 트랜잭션을 롤백하려면 ROLLBACK을 사용하세요. 명령.

다음 예를 고려하십시오.

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---
로그인 후 복사

이 예에서는 저장점으로 롤백하는 방법을 보여줍니다. (tran2) 그런 다음 전체 트랜잭션을 롤백합니다.

위 내용은 MySQL은 저장점을 사용하여 중첩 트랜잭션을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿