sql >> Database teknologi >  >> RDS >> Mysql

Hvis en PHP PDO-transaktion mislykkes, skal jeg da eksplicit rollback()?

Hvis du ikke commit ikke rollback en åbnet transaktion, og den er ikke commited hvor som helst senere i dit script, bliver det ikke commited (som set af databasemotoren) , og vil automatisk rulles tilbage i slutningen af ​​dit script.


Alligevel (nå, næsten) altid commit eller rollback udtrykkeligt de transaktioner, jeg åbner, så :

  • Der er ikke risiko for en fejl (som at begå "ved en fejl" senere i scriptet)
  • Koden er lettere at læse/forstå :når man ser $db->rollback() , han ved, at jeg med sikkerhed vil have transaktionen rullet tilbage, og han behøver ikke tænke "ønskede han virkelig at rulle tilbage, eller glemte han noget? og hvad med senere i scriptet? "


DB-motoren "ser" ikke PDO-undtagelsen :den kastes af PHP under forskellige forhold -- men databasen ruller ikke tilbage noget af sig selv :

  • enten er en transaktion begået
  • eller den er rullet tilbage
  • eller det er ikke eksplicit commited eller rullet tilbage -- hvilket betyder at det ikke er commitet -- hvilket betyder at det der er blevet ændret ikke er "rigtigt" ændret



  1. Hvordan bruger man eksisterende Oracle-sekvens til at generere id i dvale?

  2. MySQL LIKE med rækkevidde virker ikke

  3. Kæmper virkelig med CONCAT_WS ... vær venlig at hjælpe en nybegynder :)

  4. SQLite Opret tabel