Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PDO::commit() berhasil atau gagal

Bagian kuncinya adalah untuk menyetel PDO dalam mode pengecualian, sementara mencoba-tangkap hanya untuk melakukan rollback tidak diperlukan. Dengan demikian, kode Anda baik-baik saja, tidak perlu mengubahnya jika yang Anda inginkan hanyalah mengembalikan jika gagal, selama Anda memiliki baris ini di suatu tempat:

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 

Jika gagal, skrip akan dihentikan, koneksi ditutup dan mysql akan dengan senang hati mengembalikan transaksi untuk Anda.

Jika Anda masih ingin mengembalikan secara manual, Anda harus melakukannya dengan benar, tidak seperti yang dikatakan dalam jawaban lain. Pastikan bahwa

  • Anda menangkap Exception , bukan PDOException , karena tidak peduli pengecualian tertentu apa yang membatalkan eksekusi
  • Anda melempar ulang pengecualian setelah rollback, untuk diberi tahu tentang masalahnya
  • juga bahwa mesin tabel mendukung transaksi (yaitu untuk Mysql seharusnya InnoDB, bukan MyISAM).

Daftar periksa ini diambil dari artikel saya yang mungkin berguna bagi Anda dalam hal ini atau banyak aspek lainnya juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesulitan memutuskan untuk mengidentifikasi atau tidak mengidentifikasi hubungan

  2. Impor excel (.csv) ke MySQL menggunakan kode PHP dan formulir HTML

  3. mysql tidak dikenali sebagai perintah internal atau eksternal, program atau batch yang dapat dioperasikan

  4. Bagaimana cara membuat kolom virtual kompleks dalam Model Eloquent?

  5. Bagaimana cara menyimpan detail oauth Twitter di database mysql?