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
BEGINdi per sé segna l'inizio di un'istruzione composta. Puoi utilizzare soloSTART TRANSACTIONper 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