Sia in MySQL 5.7 che in MySQL 8, BEGIN
e END
è lo stesso di T-SQL e rappresenta una "istruzione composta" nota anche come "blocco di codice", proprio come le parentesi graffe in C, Java, C#, ecc.
- 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
Tuttavia, il BEGIN
la parola chiave è anche (in modo confuso) sovraccaricato come alias per BEGIN WORK
e START TRANSACTION
e la loro semantica dipende dal fatto che vengano utilizzati all'interno di un programma memorizzato o meno:
Quindi:
START TRANSACTION
- Avvia sempre una transazione. Dovresti preferire questa sintassi.
BEGIN
:- Se sei in una stored procedure, una funzione, un trigger o un evento, allora
BEGIN
di per sé segna l'inizio di un'istruzione composta. Puoi utilizzare soloSTART TRANSACTION
per avviare una transazione. - Se stai eseguendo direttamente SQL su MySQL, anche questo avvia una transazione (poiché viene interpretato come
BEGIN WORK
). Ma è sciocco e confuso usarlo in questo modo, quindi evitalo.
- Se sei in una stored procedure, una funzione, un trigger o un evento, allora
BEGIN WORK
:- Questo è un alias per
START TRANSACTION
. Eviterei di usarlo completamente per evitare confusione.
- Questo è un alias per