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

MULAI...AKHIR vs MULAI TRANSAKSI...KOMIT

Di MySQL 5.7 dan MySQL 8, BEGIN dan END sama seperti di T-SQL dan mewakili "pernyataan gabungan" juga dikenal sebagai "blok kode", seperti kurung kurawal di C, Java, C#, dll.

Namun, BEGIN kata kunci juga (membingungkan) kelebihan beban sebagai alias untuk BEGIN WORK dan START TRANSACTION , dan semantiknya bergantung pada apakah mereka digunakan di dalam program tersimpan atau tidak:

Jadi:

  • START TRANSACTION
    • Selalu memulai transaksi. Anda sebaiknya memilih sintaks ini.
  • BEGIN :
    • Jika Anda berada dalam Prosedur, Fungsi, Pemicu, atau Peristiwa Tersimpan, maka BEGIN dengan sendirinya menandai awal dari pernyataan majemuk. Anda hanya dapat menggunakan START TRANSACTION untuk memulai transaksi.
    • Jika Anda langsung mengeksekusi SQL terhadap MySQL, maka ini juga memulai transaksi (seperti yang ditafsirkan sebagai BEGIN WORK ). Tapi menggunakan cara ini konyol dan membingungkan, jadi hindari.
  • BEGIN WORK :
    • Ini adalah alias untuk START TRANSACTION . Saya akan menghindari menggunakan ini sepenuhnya untuk mencegah kebingungan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengubah dari mysql ke kesalahan kode mysqli

  2. Cara mengidentifikasi bahasa di kolom utf-8 di MySQL

  3. File my.cnf MySQL - Opsi yang ditemukan tanpa grup sebelumnya

  4. Indeks Spasial tidak digunakan

  5. Bagaimana cara menghapus berbagai catatan sekaligus di MySQL?