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.
- MySQL 5.7:https://dev.mysql .com/doc/refman/5.7/en/begin-end.html
- MySQL 8.0:https://dev.mysql .com/doc/refman/8.0/en/begin-end.html
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
BEGINdengan sendirinya menandai awal dari pernyataan majemuk. Anda hanya dapat menggunakanSTART TRANSACTIONuntuk 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.
- Jika Anda berada dalam Prosedur, Fungsi, Pemicu, atau Peristiwa Tersimpan, maka
BEGIN WORK:- Ini adalah alias untuk
START TRANSACTION. Saya akan menghindari menggunakan ini sepenuhnya untuk mencegah kebingungan.
- Ini adalah alias untuk