Я не очень понимаю, как выполнять транзакции в DBAL
У меня есть следующий скрипт, который обновляет столбец в зависимости от идентификатора строки.Я поместил поддельный идентификатор, который не существует в таблице (поэтому невозможно выполнить обновление), но первые обновления фиксируются, несмотря на то, что это транзакция.Я ожидаю, что все транзакции потерпят неудачу, если одна из них потерпит неудачу.
$conn -> beginTransaction();
try{
$try = $conn->prepare("update table set column = '123' where id = 0"); //column exists
$try->execute();
$try = $conn->prepare("update table set column = '123' where id = 1"); //column exists
$try->execute();
$try = $conn->prepare("update table set column = '123' where id = 120"); //column does not exists
$try->execute();
$try = $conn->commit();
}
catch(Exception $e) {
$try = $conn->rollback();
throw $e;
}
Ожидаемые результаты, обновлений нет, поскольку строки с id = 120 не существует. Реальные результаты, Все строки обновляются за исключением несуществующей строки.
Я заранее извиняюсь, но объектно-ориентированное программирование все еще для меня Антарктида.