sql >> Databasteknik >  >> RDS >> Mysql

Om en PHP PDO-transaktion misslyckas, måste jag explicit rollback()?

Om du inte commit inte rollback en öppnad transaktion och den är inte commited någonstans senare i ditt skript kommer det inte att commited (som ses av databasmotorn) , och kommer automatiskt att återställas i slutet av ditt skript.


Ändå, jag (nåja, nästan) alltid commit eller rollback uttryckligen transaktionerna jag öppnar, så :

  • Det finns ingen risk för ett fel (som att begå "av misstag" senare i skriptet)
  • Koden är lättare att läsa/förstå :när man ser $db->rollback() , han vet att jag vill att transaktionen ska återställas, och han behöver inte tänka "ville han verkligen återställa, eller glömde han något? och vad händer senare i manuset? "


DB-motorn "ser" inte PDOUndantaget :det kastas av PHP under olika förhållanden -- men databasen återställer ingenting av sig själv :

  • antingen genomförs en transaktion
  • eller så har den rullats tillbaka
  • eller så är det inte explicit begått eller återställt -- vilket betyder att det inte är begått -- vilket betyder att det som har ändrats inte är "riktigt" modifierat



  1. SQL Replace or Insert Into Syntax-fel

  2. Få ut specialtecken från en MySQL-databas med PHP

  3. Behöver infoga 100 000 rader i mysql med viloläge på under 5 sekunder

  4. Hur översätter man PostgreSQL array_agg-funktionen till SQLite?