MySQL 8.3 Release Notes
[begin_label:] BEGIN
[statement_list]
END [end_label]
BEGIN ... END 语法用于编写复合语句,这些语句可以出现在存储程序中(存储过程和函数、触发器和事件)。一个复合语句可以包含多个语句,括在 BEGIN 和 END 关键字之间。statement_list 代表一个或多个语句的列表,每个语句以分号 (;) 结尾。 statement_list 本身是可选的,因此空复合语句 (BEGIN END) 是合法的。
BEGIN ... END 块可以嵌套。
使用多个语句需要客户端能够发送包含 ; 语句分隔符的语句字符串。在 mysql 命令行客户端中,这可以使用 delimiter 命令来处理。更改 ; 结束语句分隔符(例如,改为 //)允许在程序体中使用 ;。例如,见 第 27.1 节,“定义存储程序”。
一个 BEGIN ... END 块可以被标记。见 第 15.6.2 节,“语句标签”。
可选的 [NOT] ATOMIC 子句不受支持。这意味着在指令块的开始处没有设置事务保存点,并且在此上下文中使用的 BEGIN 子句对当前事务没有影响。
Note
在所有存储程序中,解析器将 BEGIN [WORK] 视为 BEGIN ... END 块的开始。在这种情况下,要开始事务,请使用 START TRANSACTION 代替。