Я искал два дня и до сих пор не нашел ответа. Предположим, у меня есть код под PHP:
$mysqli->begin_transaction();
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=1");
mysqli_query($mysqli, "DELETE FROM TEST WHEREE ID=2"); <-- THIS ONE WILL FAIL BECAUSE OF TYPO
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=3");
if ($mysqli->commit()) {
//SUCCESS
}
else {
//Failed
$mysqli->rollback();
}
Я не могу проверить, все ли запросы внутри транзакции были успешными, потому что когда я выполняю эти запросы, функция фиксации всегда возвращает true.
Как я могу проверить, все запросы внутри транзакции успешно выполнены?
Обычный способ сделать это:
$mysqli->begin_transaction();
try {
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=1");
mysqli_query($mysqli, "DELETE FROM TEST WHEREE ID=2"); <-- THIS ONE WILL FAIL BECAUSE OF TYPO
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=3");
} catch (\Exception $e) {
// this will show statement with error
echo $e->getMessage();
$mysqli->rollback();
throw $e;
}
$mysqli->commit();
Других решений пока нет …