Bir PHP PDO işlem başarısız olursa, ben explicitely) (geri alma gerekir?

1 Cevap php

Birisi bir yapan bir kod örneği gördüm

$dbh->rollback();

Bir PDOException orada oluşur. I veritabanı böyle bir durumda otomatik olarak geri alma olacak düşünce?

1 Cevap

Değil commit değil rollback açılmış bir işlem yapmak ve daha sonra komut commited yerde değil, o {olmayacaktır [(2) ]} (as seen by the database engine), ve irade senin senaryonun sonunda otomatik olarak toplu geri.


Still, I (well, almost) always commit or rollback explicitly the transactions I open, so :

  • Bir hata riski (komut dosyası daha sonra "yanlışlıkla" İşleyen gibi) yok
  • The code is more easy to read / understand: Bir gördüğünde $db->rollback(), o ben emin işlem haddelenmiş-geri istiyorum biliyor ve o düşünmek zorunda değil "did he really want to rollback, or did he forget something ? and what about later in the script ?"


The DB engine doesn't "see" the PDOException : it is thrown by PHP under various conditions -- but the database doesn't rollback anything by itself :

  • Bir işlem kararlıdır ya da
  • ya da haddelenmiş-geri
  • veya açıkça taahhüt ne de toplu geri değil - ne değiştirilmiş oldu "gerçekten" değiştirilmiş değildir anlamına gelir - ki bu kararlı değil demektir