Als u zich niet commit
niet rollback
een geopende transactie, en deze is niet commited
ergens later in je script, wordt het niet commited
(zoals gezien door de database-engine) , en wordt automatisch teruggedraaid aan het einde van uw script.
Toch (nou ja, bijna) altijd commit
of rollback
expliciet de transacties die ik open, dus:
- Er is geen risico op een fout (zoals 'per ongeluk' later in het script plegen)
- De code is gemakkelijker te lezen/begrijpen :wanneer men
$db->rollback()
. ziet , hij weet dat ik de transactie zeker wil terugdraaien, en hij hoeft niet na te denken "Wil hij echt terugdraaien of is hij iets vergeten? en hoe zit het later in het script? "
De DB-engine "ziet" de PDOException niet:deze wordt onder verschillende omstandigheden door PHP gegenereerd -- maar de database kan zelf niets terugdraaien:
- ofwel een transactie is uitgevoerd
- of het wordt teruggedraaid
- of het is niet expliciet vastgelegd of teruggedraaid -- wat betekent dat het niet is vastgelegd -- wat betekent dat wat is gewijzigd niet "echt" is gewijzigd