Dans MySQL 5.7 et MySQL 8, BEGIN et END est le même que dans T-SQL et représente une "instruction composée" également connue sous le nom de "bloc de code", tout comme les accolades en C, Java, C#, etc.
- 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
Cependant, le BEGIN le mot-clé est également (de manière confuse) surchargé en tant qu'alias pour BEGIN WORK et START TRANSACTION
, et leur sémantique dépend de s'ils sont utilisés ou non dans un programme stocké :
Donc :
START TRANSACTION- Commence toujours une transaction. Vous devriez préférer cette syntaxe.
BEGIN:- Si vous êtes dans une procédure stockée, une fonction, un déclencheur ou un événement, alors
BEGINmarque à lui seul le début d'une instruction composée. Vous ne pouvez utiliser queSTART TRANSACTIONpour démarrer une transaction. - Si vous exécutez directement SQL sur MySQL, cela démarre également une transaction (car elle est interprétée comme
BEGIN WORK). Mais c'est idiot et déroutant de l'utiliser de cette façon, alors évitez-le.
- Si vous êtes dans une procédure stockée, une fonction, un déclencheur ou un événement, alors
BEGIN WORK:- Ceci est un alias pour
START TRANSACTION. J'éviterais complètement de l'utiliser pour éviter toute confusion.
- Ceci est un alias pour