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

Contoh transaksi PHP + MySQL

Ide yang biasanya saya gunakan saat bekerja dengan transaksi terlihat seperti ini (semi-pseudo-code) :

try {
    // First of all, let's begin a transaction
    $db->beginTransaction();
    
    // A set of queries; if one fails, an exception should be thrown
    $db->query('first query');
    $db->query('second query');
    $db->query('third query');
    
    // If we arrive here, it means that no exception was thrown
    // i.e. no query has failed, and we can commit the transaction
    $db->commit();
} catch (\Throwable $e) {
    // An exception has been thrown
    // We must rollback the transaction
    $db->rollback();
    throw $e; // but the error must be handled anyway
}

Perhatikan bahwa, dengan ide ini, jika kueri gagal, Pengecualian harus dilemparkan:
  • PDO bisa melakukannya, tergantung bagaimana Anda mengonfigurasinya
  • jika tidak, dengan beberapa API lain, Anda mungkin harus menguji hasil fungsi yang digunakan untuk mengeksekusi kueri, dan membuat pengecualian sendiri.

Sayangnya, tidak ada sihir yang terlibat. Anda tidak bisa hanya meletakkan instruksi di suatu tempat dan melakukan transaksi secara otomatis:Anda masih harus menentukan kelompok kueri mana yang harus dieksekusi dalam suatu transaksi.

Misalnya, cukup sering Anda akan memiliki beberapa pertanyaan sebelum transaksi (sebelum begin ) dan beberapa kueri lainnya setelah transaksi (setelah commit atau rollback ) dan Anda ingin kueri tersebut dijalankan apa pun yang terjadi (atau tidak) dalam transaksi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan ekstensi spasial MySQL untuk memilih titik di dalam lingkaran

  2. Cara Mendapatkan Jumlah Hari dalam Sebulan di MySQL

  3. pendekatan yang lebih baik daripada menyimpan kata sandi mysql dalam teks biasa di file konfigurasi?

  4. Bagaimana ClusterControl Mengonfigurasi IP Virtual dan Apa yang Diharapkan Selama Failover

  5. Bagaimana saya harus menangani --secure-file-priv di MySQL?