Jeśli nie commit nie rollback otwarta transakcja i nie jest commited nigdzie później w skrypcie nie zostanie commited (z punktu widzenia silnika bazy danych) , i zostanie automatycznie wycofany na końcu skryptu.
Nadal, ja (no, prawie) zawsze commit lub rollback jawnie transakcje, które otwieram, więc :
- Nie ma ryzyka błędu (np. popełnienia „pomyłki” w dalszej części skryptu)
- Kod jest łatwiejszy do odczytania / zrozumienia :gdy widzimy
$db->rollback(), wie, że na pewno chcę wycofać transakcję, i nie musi myśleć „czy naprawdę chciał wycofać, czy o czymś zapomniał? i co dalej w skrypcie? ”
Silnik bazy danych nie "widzi" wyjątku PDOException :jest on zgłaszany przez PHP w różnych warunkach - ale baza danych sama niczego nie wycofuje :
- albo transakcja została zatwierdzona
- lub wycofane
- lub nie jest to wyraźnie zatwierdzone ani wycofane — co oznacza, że nie zostało zatwierdzone — co oznacza, że to, co zostało zmodyfikowane, nie jest „naprawdę” modyfikowane