Я видел пример кода, где кто-то делает a
$dbh->rollback();
когда там происходит PDOException. Я думал, что база данных будет откатывать автоматически в таком случае?
Если вы не зафиксируете
не откат
открытой транзакции, и это не скоммитировано
нигде в дальнейшем в вашем скрипте, это не будет скоммитировано
(как видно из движка базы данных) , и будет автоматически откат назад в конце вашего скрипта.
Тем не менее, я (ну, почти) всегда commit
или rollback
явно открываю транзакции, так что :
$db->rollback()
, он точно знает, что я хочу откат транзакции, и ему не нужно думать, что "действительно ли он хотел откат, или он что-то забыл? а как насчет более позднего сценария ? "
Движок БД не "видит" PDOException : он брошен PHP при различных условиях -- но БД сама по себе ничего не откатывает :