当其中一个抛出错误时,如何从处理程序中回滚所有事务语句?

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