当其中一个抛出错误时,如何从处理程序中回滚所有事务语句?
How to rollback all transaction statements from handler when one of them throws an error?
我有以下 SQL 存储过程:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO users (user_id) VALUES (55556666);
DROP TABLE xaxa;
ROLLBACK;
END
DROP TABLE xaxa;
语句抛出错误,因为这样的数据库不存在,但是,执行了 INSERT 语句,在 phpmyadmin 中我可以看到插入的用户。
但是,如果我删除麻烦的语句 DROP TABLE xaxa;
INSERT
被回滚。
如果可能的话,有人可以帮我从处理程序中回滚插入吗?
DROP TABLE 语句无法回滚,它会导致隐式提交。
https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
我有以下 SQL 存储过程:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO users (user_id) VALUES (55556666);
DROP TABLE xaxa;
ROLLBACK;
END
DROP TABLE xaxa;
语句抛出错误,因为这样的数据库不存在,但是,执行了 INSERT 语句,在 phpmyadmin 中我可以看到插入的用户。
但是,如果我删除麻烦的语句 DROP TABLE xaxa;
INSERT
被回滚。
如果可能的话,有人可以帮我从处理程序中回滚插入吗?
DROP TABLE 语句无法回滚,它会导致隐式提交。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html