做之间有什么区别
START TRANSACTION
...
COMMIT
或这样做:
BEGIN
...
END
以后会自动提交吗,还是使用另一个自动提交的实际示例?
答案 0 :(得分:2)
在MySQL 5.7和MySQL 8中,BEGIN
和END
与T-SQL中的相同,代表“复合语句”,也称为“代码块”,就像卷曲-C,Java,C#等中的花括号。
However, the BEGIN
keyword is also (confusingly) overloaded as an alias for BEGIN WORK
and START TRANSACTION
,其语义取决于是否在存储程序内部使用它们:
在所有存储的程序(存储的过程和函数,触发器和事件)中,解析器将
BEGIN [WORK]
视为BEGIN ... END
块的开始。在这种情况下,请改用START TRANSACTION
开始交易。
所以:
START TRANSACTION
BEGIN
:
BEGIN
本身就标志着复合语句的开始。您只能使用START TRANSACTION
来开始交易。BEGIN WORK
)。但是以这种方式使用它是愚蠢且令人困惑的,因此请避免使用它。BEGIN WORK
:
START TRANSACTION
的别名。我会避免完全使用它来防止混乱。