首先,我将
John
设置为用户定义变量@name
,如下所示:
SET @name = 'John';
然后,我在事务中将
David
设置为@name
,然后回滚,如下所示:
BEGIN;
SET @name = 'David';
ROLLBACK;
但是,
@name
并没有回滚到John
,如下所示:
mysql> SELECT @name;
+-------+
| @name |
+-------+
| David |
+-------+
我阅读了有关交易和用户定义变量的文档,但我找不到任何相关信息。
那么,如何回滚用户定义的变量呢?
在MySQL中,只有某些存储引擎(主要是InnoDB)中的DML语句支持事务。
使用
SET
设置变量,无论是用户定义变量还是内置会话或全局变量,都无法回滚。这些语句与任何特定的存储引擎无关,并且不支持事务。