V MySQL 5.7 a MySQL 8 BEGIN a END je stejný jako v T-SQL a představuje "složený příkaz" také známý jako "blok kódu", stejně jako složené závorky v C, Java, C# atd.
- 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
Nicméně BEGIN klíčové slovo je také (zmateně) přetížené jako alias pro BEGIN WORK a START TRANSACTION
a jejich sémantika závisí na tom, zda jsou používány uvnitř uloženého programu nebo ne:
Takže:
START TRANSACTION- Vždy zahájí transakci. Tuto syntaxi byste měli preferovat.
BEGIN:- Pokud se nacházíte v uložené proceduře, funkci, spouštěči nebo události, pak
BEGINsám o sobě označuje začátek složeného příkazu. Můžete použít pouzeSTART TRANSACTIONk zahájení transakce. - Pokud přímo spouštíte SQL proti MySQL, pak to také spustí transakci (jak je interpretováno jako
BEGIN WORK). Ale je to hloupé a matoucí používat to tímto způsobem, takže se tomu vyhněte.
- Pokud se nacházíte v uložené proceduře, funkci, spouštěči nebo události, pak
BEGIN WORK:- Toto je alias pro
START TRANSACTION. Vyhnul bych se tomu úplně, abych zabránil zmatkům.
- Toto je alias pro