SQL一些语句执行后出现异常不会回滚问题

MySQL回滚问题

SQL中会隐式提交的操作:

1、DDL语句:ALTER DATABASE、ALTER EVENT、ALTER PROCEDURE、ALTER TABLE、ALTER VIEW、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE等;
2、修改MYSQL架构的语句:CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD;
3、管理语句:ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE等,

总结:设计事务时,不应包含这类语句。如果在事务的前部中发布了一个不能被回滚的语句,则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句不能 回滚事务的全部效果,简单来说如果这个不能被回滚的语句之前有事务,并且这个不能被回滚的语句执行异常了,之前的修改操作会隐式的提交。
例如
这种情况下 int i=5/0;发生异常了,上面的修改操作会发生回滚,修改密码失败的。
在这里插入图片描述

这种情况下userMapper.dropField(tableName,fieldName);我故意tableName传一个不存在的表名,这里会抛出异常,但是上面的更新密码操作还是会成功(隐式地提交了事务)
在这里插入图片描述


版权声明:本文为weixin_44863976原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。