отменить транзакцию в MySQL InnoDB вместо фиксации или отката - PullRequest
0 голосов
/ 18 октября 2018

Я использую транзакцию в базе данных MySQL InnoDB для выполнения 2 вставок.Однако, если первая вставка не удалась, я хотел бы просто «отменить» транзакцию.Есть ли хороший подход для «отмены» транзакции вместо использования commit или rollback?

Например, в php я делаю следующее:

$connection->beginTransaction();
$affectedRows = $tableOne->insertIgnore('example data');
if ($affectedRows == 0) {
    $connection->rollback();
} else {
    $tableTwo->insert('more example data');
    $connection->commit();
}

КакВы можете видеть, я использую rollback для отмены транзакции, но это неправильное название, потому что на самом деле откат нечего.

1 Ответ

0 голосов
/ 18 октября 2018

На самом деле нет концепции отмены транзакции.Вместо этого вам нужно сделать rollback.Кроме того, вы также можете ничего не делать.Если у объекта соединения есть незафиксированная транзакция, когда он выходит из области видимости, или он закрыт другим способом, транзакция будет автоматически откатана.

Другими словами, все в порядке, если откатывать нечего, потому что под нимкапот, драйвер DB будет обращаться с этим делом изящно.

...