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:
ไม่สามารถซ้อนธุรกรรมได้ นี่เป็นผลมาจากการกระทำโดยนัยที่ดำเนินการสำหรับธุรกรรมปัจจุบันเมื่อคุณออกคำสั่ง START TRANSACTION หรือคำพ้องความหมายอย่างใดอย่างหนึ่ง https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html