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
BEGIN
marque à lui seul le début d'une instruction composée. Vous ne pouvez utiliser queSTART TRANSACTION
pour 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