문제

MySQL은 중첩 트랜잭션을 사용할 수 있습니까?

도움이 되었습니까?

해결책

InnoDB 지원합니다 SAVEPOINTS.

다음을 수행 할 수 있습니다.

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
---

다른 팁

MySQL 문서에서 :

거래는 중첩 될 수 없습니다. 이는 시작 트랜잭션 명세서 또는 동의어 중 하나를 발행 할 때 현재 거래에 대해 수행 된 암시 적 커밋의 결과입니다. https://dev.mysql.com/doc/refman/55.7/en/implicit-commit.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top