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
BEGIN
dengan sendirinya menandai awal dari pernyataan majemuk. Anda hanya dapat menggunakanSTART 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.
- 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