Pokud se commit
nikoli rollback
otevřená transakce a není commited
kdekoli později ve skriptu to nebude commited
(jak je vidí databázový stroj) a na konci vašeho skriptu se automaticky vrátí zpět.
Přesto jsem (no, skoro) vždy commit
nebo rollback
explicitně transakce, které otevírám, takže:
- Neexistuje riziko chyby (např. spáchání „omylem“ později ve skriptu)
- Kód je snadněji čitelný a srozumitelnější :když člověk uvidí
$db->rollback()
, určitě ví, že chci transakci vrátit zpět, a nemusí přemýšlet „opravdu chtěl vrátit zpět, nebo na něco zapomněl? a co později ve skriptu? "
."
Db engine "nevidí" PDOException:je vyvolána PHP za různých podmínek - ale databáze sama nic nevrací:
- buď je transakce potvrzena
- nebo je vrácena zpět
- nebo to není výslovně potvrzeno ani vráceno zpět – což znamená, že není potvrzeno – což znamená, že to, co bylo upraveno, není „ve skutečnosti“ změněno