一个分享个人学习、开发经验的Blog,http://www.joyphper.net

PHP的MYSQL事务处理,begin/rollback/commit

posted @ 2011-04-12 14:45 | 阅读:5802 | 评论:1 | 分类: 数据库

      MYSQL数据库从4.1就开始支持事务功能,据说5.0将引入存储过程。
      首先要用show engines查看数据库的引擎,如果InnoDB为DISABLED ,则打开my.ini(集成包可能是my.cnf)文件,找到skip-innodb,前面加上注释#skip-innodb即可,如果该表不是InnoDB,可用 ALTERTABLE tanlename ENGINE= innodb修改表。

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

TAG: 事务处理 , begin , rollback , commit , mysql

共有1条评论 发表评论>>

发表于:2011-11-03 23:19
我就是用的第二种方法,为什么无效呢。其中有一条语句错了,然后回滚,但是其他的语句还是执行了,求博主解答!
点击换一张验证码