Функционально нет никакого различия.
Однако существует одна причина того, что не было сделано это. Более длинные методы с несколькими точками выхода часто более трудно прочитать и проанализировать. Но то возражение больше имеет отношение к операторам возврата, чем выгода и наконец блоки.
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
---