W MySQL 5.7 i MySQL 8, BEGIN
i END
jest taka sama jak w T-SQL i reprezentuje „instrukcję złożoną” znaną również jako „blok kodu”, podobnie jak nawiasy klamrowe w C, Java, C# itp.
- 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
Jednakże BEGIN
słowo kluczowe jest również (mylnie) przeciążony jako alias dla BEGIN WORK
i START TRANSACTION
, a ich semantyka zależy od tego, czy są używane wewnątrz zapisanego programu, czy nie:
A więc:
START TRANSACTION
- Zawsze rozpoczyna transakcję. Powinieneś preferować tę składnię.
BEGIN
:- Jeśli jesteś w procedurze składowanej, funkcji, wyzwalaczu lub zdarzeniu, to
BEGIN
sam w sobie oznacza początek instrukcji złożonej. Możesz użyć tylkoSTART TRANSACTION
aby rozpocząć transakcję. - Jeśli bezpośrednio wykonujesz SQL na MySQL, to również uruchamia transakcję (ponieważ jest to interpretowane jako
BEGIN WORK
). Ale używanie go w ten sposób jest głupie i mylące, więc unikaj go.
- Jeśli jesteś w procedurze składowanej, funkcji, wyzwalaczu lub zdarzeniu, to
BEGIN WORK
:- To jest alias dla
START TRANSACTION
. Unikałbym używania tego całkowicie, aby uniknąć nieporozumień.
- To jest alias dla