liangchaoxi
2016-05-30 05:19
采纳率: 33.3%
浏览 5.5k

mysql事务用begin……commit好还是用set autocommit……commit好

我觉得第一种好,因为即使commit失败或者异常了,会自己超时释放锁住的表。第二种就悲剧了,commit失败,事务不会超时,表会一直被锁住。我理解的对吗

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • _1_1_7_ 2016-06-07 09:27

    MYSQL的事务处理主要有两种方法。
    1、用begin,rollback,commit来实现
    begin 开始一个事务
    rollback 事务回滚
    commit 事务确认
    2、直接用set来改变mysql的自动提交模式
    MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
    set autocommit=0 禁止自动提交
    set autocommit=1 开启自动提交
    来实现事务的处理。
    但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
    个人推荐使用第一种方法!
    MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)

    2 打赏 评论
  • oyljerry 2016-05-30 06:55

    如果设置autocommit, 那么delete,modify,insert等操作将会自动提交,这样你就没办法回退等。
    而用start transaction,在commit的时候才会提交。这样你可以在对结果进行了确认后,再commit。这样安全性更好。

    打赏 评论

相关推荐 更多相似问题