发现了mysql某些ENGINE下不能rollback事务(已经设置了setAutoCommit(false); )

lzheng2001 2008-07-08 12:38:59
发现了mysql某些ENGINE下不能rollback事务(已经设置了setAutoCommit(false); )

代码:
con = DriverManager.getConnection("jdbc:mysql:///jk","rjk", "sivaji");
con.setAutoCommit(false);
java.sql.Statement stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO jk1(fname, lname) VALUES('a', 'b')");
stmt.executeUpdate("INSERT INTO jk1(fname, lname) VALUES('c', 'd')");
con.rollback();
stmt.executeUpdate("INSERT INTO jk1(fname, lname) VALUES('x', 'y')");
con.commit();

结果:全部记录都插入到数据库中,理论上应该是前两条记录rollback;第三条才会保存,实际上并不是.

原因:mysql 需要设置table 的 ENGINE=InnoDB 才支持以上的例子中的功能.

发贴共享一下.
...全文
116 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2008-07-08
  • 打赏
  • 举报
回复
确实是,MYISAM不支持事务,谢谢分享

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧