sql >> Databáze >  >> RDS >> Mysql

Pokud se transakce PHP PDO nezdaří, musím explicitně rollback()?

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



  1. MySQL 'Oříznutá nesprávná hodnota INTEGER'

  2. MySQL agregovaný součet objektů JSON

  3. Problémy se spuštěním Mysql | CHYBA! Server skončil bez aktualizace souboru PID

  4. Vložit do všech buněk, pokud je záznamů více než jeden PHP