Както в MySQL 5.7, така и в MySQL 8, BEGIN и END е същото като в T-SQL и представлява „съставен израз“, известен също като „блок от код“, точно като фигурни скоби в C, Java, C# и т.н.
- 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
Въпреки това BEGIN ключова дума също е (объркващо) претоварен като псевдоним за BEGIN WORK и START TRANSACTION
и тяхната семантика зависи от това дали се използват в съхранена програма или не:
И така:
START TRANSACTION- Винаги започва транзакция. Трябва да предпочетете този синтаксис.
BEGIN:- Ако сте в съхранена процедура, функция, тригер или събитие, тогава
BEGINсам по себе си маркира началото на съставен израз. Можете да използвате самоSTART TRANSACTIONза стартиране на транзакция. - Ако изпълнявате директно SQL срещу MySQL, това също стартира транзакция (тъй като се тълкува като
BEGIN WORK). Но е глупаво и объркващо да го използвате по този начин, така че го избягвайте.
- Ако сте в съхранена процедура, функция, тригер или събитие, тогава
BEGIN WORK:- Това е псевдоним за
START TRANSACTION. Бих избягвал да използвам това напълно, за да предотвратя объркване.
- Това е псевдоним за