【发布时间】:2012-05-04 22:08:05
【问题描述】:
不知道Start Transaction OR Begin Work用什么比较好,有什么区别。
【问题讨论】:
不知道Start Transaction OR Begin Work用什么比较好,有什么区别。
【问题讨论】:
来自MySQL manual:
BEGIN和BEGIN WORK支持作为START TRANSACTION的别名来启动事务。START TRANSACTION是标准 SQL 语法,是启动临时事务的推荐方式。
【讨论】:
这是来自MySQL 8.0 manual的更新答案:
BEGIN ... END 语法用于编写复合语句,可以出现在存储程序(存储过程和函数、触发器和事件)中。
这意味着 BEGIN ... END 语法仅用于构建代码并启用嵌套(此块可以嵌套)。 在手册后面:
在所有存储的程序中,解析器将 BEGIN [WORK] 视为 BEGIN ... END 块的开始。要在此上下文中开始事务,请改用 START TRANSACTION。
这意味着 BEGIN/BEGIN WORK 是 BEGIN ... END 语法中 BEGIN 的别名,它们不是 START TRANSACTION 的别名。在存储过程、函数、触发器和事件中,您应该始终使用 START TRANSACTION 来启动事务。
【讨论】: