ďťż

[PHP] PDO::rollBack trzeba wywołać w try{}catch{}?

       

Podstrony


telcocafe

Jeżeli metodę PDO::beginTransaction() wraz z zapytaniami obejmę w blok try, trzeba wywołać PDO::rollBack() w sekcji catch, czy PDO zrobi to automatycznie, gdy wystąpi błąd? Teoretycznie zmiany powinny zostać dokonane dopiero po wywołaniu PDO::commit(), a przecież to się nie stanie, gdy PDO rzuci wyjątek. Wolę jednak upewnić się.

Przykład:try { $db->beginTransaction(); $db->exec('DELETE FROM kosz'); $db->exec('wygenerujblad'); //Tutaj PDO rzuci wyjątek $db->commit(); } catch(PDOException $e) { /* trzeba pisać $db->rollBack()? */ }
Użytkownik Ferrari edytował ten post 05 kwiecień 2009, 23:11



The automatic rollback only happens if you initiate the transaction via PDO::beginTransaction(). If you manually issue a query that begins a transaction PDO has no way of knowing about it and thus cannot roll it back if something bad happens.
http://php.mirror.fa...ransactions.php
Użytkownik Kozack edytował ten post 06 kwiecień 2009, 02:13
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.