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
BEGINsam w sobie oznacza początek instrukcji złożonej. Możesz użyć tylkoSTART TRANSACTIONaby 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