为什么MySQL事务无法在错误时回滚?

时间:2019-01-03 03:19:10

标签: mysql transactions commit rollback

我正在尝试学习如何在出错时回滚事务。我创建了以下storedProcedure,以了解其工作原理。

CREATE DEFINER=`mytestlogin`@`%` PROCEDURE `insert_to_test`()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING ROLLBACK;

START TRANSACTION;
INSERT INTO test1 (FIELD) VALUES(10);
INSERT INTO test3 (FIELD) VALUES(100);
COMMIT WORK;
END

Test1表具有两个字段,即ID和FIELD。 Test2表也有两个字段,即ID和FIELD。

我故意将表查询设置为test3失败。当我运行时,我得到了错误,但是它没有在test1上完成回滚事务。 (已更新)

我得到的错误是:

19:11:35    call insert_to_test 0 row(s) affected, 1 warning(s): 1196 Some non-transactional changed tables couldn't be rolled back 0.047 sec

错误也无法检测到test3也不存在。

感谢您的帮助。

0 个答案:

没有答案