Вложенные транзакции позволяются в MySQL?

Функционально нет никакого различия.

Однако существует одна причина того, что не было сделано это. Более длинные методы с несколькими точками выхода часто более трудно прочитать и проанализировать. Но то возражение больше имеет отношение к операторам возврата, чем выгода и наконец блоки.

82
задан random 1 July 2011 в 03:09
поделиться

1 ответ

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
---
73
ответ дан 24 November 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: