In zowel MySQL 5.7 als MySQL 8, BEGIN
en END
is hetzelfde als in T-SQL en vertegenwoordigt een "samengestelde instructie" ook bekend als "een codeblok", net als accolades in C, Java, C#, enz.
- 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
De BEGIN
zoekwoord is ook (verwarrend) overbelast als alias voor BEGIN WORK
en START TRANSACTION
, en hun semantiek hangt af van of ze in een opgeslagen programma worden gebruikt of niet:
Dus:
START TRANSACTION
- Start altijd een transactie. U zou deze syntaxis moeten prefereren.
BEGIN
:- Als u zich in een opgeslagen procedure, functie, trigger of gebeurtenis bevindt,
BEGIN
op zichzelf markeert het begin van een samengestelde instructie. U kunt alleenSTART TRANSACTION
. gebruiken om een transactie te starten. - Als je SQL rechtstreeks uitvoert tegen MySQL, dan start dit ook een transactie (zoals het wordt geïnterpreteerd als
BEGIN WORK
). Maar het is dwaas en verwarrend om het op deze manier te gebruiken, dus vermijd het.
- Als u zich in een opgeslagen procedure, functie, trigger of gebeurtenis bevindt,
BEGIN WORK
:- Dit is een alias voor
START TRANSACTION
. Ik zou dit volledig vermijden om verwarring te voorkomen.
- Dit is een alias voor