已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
18天前关门了。
Improve this question的
我尝试在my_proc()
过程中使用ROLLBACK statement将局部变量v1
从5
回滚到2
,但v1
未回滚,而5
仍保持不变,如下所示:
DELIMITER $$
CREATE PROCEDURE my_proc()
BEGIN
DECLARE v1 INT DEFAULT 2; -- v1 is 2
START TRANSACTION;
SELECT 5 INTO v1; -- v1 is 5
SELECT v1; -- v1 is 5
ROLLBACK; -- Here
SELECT v1; -- v1 is 5
END$$
DELIMITER ;
字符串
以下是不回滚v1
而保留5
的实际结果:
mysql> CALL my_proc();
+------+
| v1 |
+------+
| 5 |
+------+
1 row in set (0.00 sec)
+------+
| v1 |
+------+
| 5 |
+------+
1 row in set (0.00 sec)
型
那么,如何回滚局部变量呢?
1条答案
按热度按时间kyvafyod1#
Rollback回滚数据库事务,取消它对表中数据所做的任何更改**。更改变量的值不会保存在mysql表中,因此rollback不会回滚对变量的更改。
唯一的解决方法是保留变量的原始值,并在满足某些条件时恢复它。