在默认的情况下,MySQL从自动提交(autocommit)模式运行,这种模式会在每条语句执行完毕后把它作出的修改立刻提交给数据库并使之永久化。事实上,这相当于把每一条语句都隐含地当做一个事务来执行。如果你想明确地执行事务,需要禁用自动提交模式并告诉MySQL你想让它在何时提交或回滚有关的修改。
执行事务的常用办法是发出一条START TRANSACTION(或BEGIN)语句挂起自动提交模式,然后执行构成本次事务的各条语句,最后用一条COMMIT语句结束事务并把它们作出的修改永久性地记入数据库。万一在事务过程中发生错误,用一条ROLLBACK语句撤销事务并把数据库恢复到事务开始之前的状态。START TRANSACTION语句"挂起"自动提交模式的含义是:在事务被提交或回滚之后,该模式将恢复到开始本次事务的START TRANSACTION语句被执行之前的状态。(如果自动提交模式原来是激活的,结束事务将让你回到自动提交模式;如果它原来是禁用的,结束当前事务将开始下一个事务。)
如果是autocommit模式  ,autocommit的值应该为 1 ,不autocommit 的值是 0 ;请在试验前 确定autocommit 的模式是否开启 。

解决方案 »

  1.   

    START TRANSACTION了以后  就会忽略这个autocommit参数
      

  2.   

    START TRANSACTION了以后  就会忽略这个autocommit参数。 会吗? 我的mysql  autocommit=1  但我执行start transaction
    update table....
    select * from table
    到这里为止查询的结果是更新了的(没有commit哦)
      

  3.   

    START TRANSACTION了以后  就会忽略这个autocommit参数。 会吗? 我的mysql  autocommit=1  但我执行start transaction
    update table....
    select * from table
    到这里为止查询的结果是更新了的(没有commit哦)
      

  4.   

    1楼 我就是想知道 START TRANSACTION 就会隐式的设置autocommit=0
      

  5.   

    START TRANSACTION了以后  就会忽略这个autocommit参数。 会吗? 我的mysql  autocommit=1  但我执行start transaction
    update table....
    select * from table
    到这里为止查询的结果是更新了的(没有commit哦)
    这没错啊。
    你在select 之前插入一条语句rollback, 再式一下。
    另: MYISAM不支持事务。
      

  6.   

    START TRANSACTION了以后  就会忽略这个autocommit参数。 会吗? 我的mysql  autocommit=1  但我执行start transaction
    update table....
    select * from table
    到这里为止查询的结果是更新了的(没有commit哦)
    这没错啊。
    你在select 之前插入一条语句rollback, 再式一下。
    另: MYISAM不支持事务。
    哦 明白了  我以为这个时候的select是直接从硬盘上读出来的哦