无法回滚MySQL中的用户定义变量

问题描述 投票:0回答:1

首先,我将

John
设置为用户定义变量
@name
,如下所示:

SET @name = 'John';

然后,我在事务中将

David
设置为
@name
,然后回滚,如下所示:

BEGIN;
SET @name = 'David';
ROLLBACK;

但是,

@name
并没有回滚到
John
,如下所示:

mysql> SELECT @name;
+-------+
| @name |
+-------+
| David |
+-------+

我阅读了有关交易用户定义变量的文档,但我找不到任何相关信息。

那么,如何回滚用户定义的变量呢?

mysql database transactions session-variables user-defined-variables
1个回答
0
投票

在MySQL中,只有某些存储引擎(主要是InnoDB)中的DML语句支持事务。

使用

SET
设置变量,无论是用户定义变量还是内置会话或全局变量,都无法回滚。这些语句与任何特定的存储引擎无关,并且不支持事务。

© www.soinside.com 2019 - 2024. All rights reserved.