I've seen an code example where someone does a
$dbh->rollback();
when there occurs an PDOException. I thought the database will rollback automatically in such a case?
I've seen an code example where someone does a
$dbh->rollback();
when there occurs an PDOException. I thought the database will rollback automatically in such a case?
If you don't commit
not rollback
an opened transaction, and it's not commited
anywhere later in your script, it won't be commited
(as seen by the database engine), and will automatically rolled-back at the end of your script.
Still, I (well, almost) always commit
or rollback
explicitly the transactions I open, so :
$db->rollback()
, he knows I want the transaction rolled-back for sure, and he doesn't have to think "did he really want to rollback, or did he forget something ? and what about later in the script ?"
The DB engine doesn't "see" the PDOException : it is thrown by PHP under various conditions -- but the database doesn't rollback anything by itself :