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