Както в 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
. Бих избягвал да използвам това напълно, за да предотвратя объркване.
- Това е псевдоним за