• mysql 事务处理


    start TRANSACTION;  //事务处理开始
    UPDATE a set money =money-2 where id=1;
    UPDATE a set money=money+2 where id=2;
    COMMIT;//事务处理结束

    start TRANSACTION;//事务处理开始
    UPDATE a set money =money-2 where id=1;
    UPDATE a set money=money+2 where id=2;
    ROLLBACK;//事务处理回滚

    alter table a change money money int UNSIGNED;//改变表MONEY为无负号

    ------------

    实例1

    <?php
    $conn=mysql_connect('localhost','root','yourpassword')or die(mysql_error());
    mysql_select_db('transaction',$conn);
    mysql_query('set names utf8');

    //创建事务
    mysql_query('START TRANSACTION') or die(mysql_error());
    $sqlA="update A set account=account-1";
    if(!mysql_query($sqlA)){
    &nbsp;&nbsp;&nbsp; mysql_query('ROLLBACK') or exit(mysql_error());//判断当执行失败时回滚
    &nbsp;   exit();
    }
    $sqlB="update B set account=account+1";
    if(!mysql_query($sqlB)){
    &nbsp;&nbsp;&nbsp; mysql_query('ROLLBACK') or exit(mysql_error());//判断当执行失败时回滚
    &nbsp;   exit();
    }
    mysql_query('COMMIT')or die(mysql_error());//执行事务
    mysql_close($conn);
    ?>

    实例2

    -----------------------

    php代码实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。
    autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果参数为false则关闭自动提交。MySQL数据库默认为自动提交。
    rollback():利用mysqli类中的该方法可以实现事务的回滚。
    commit():利用该方法可以实现提交所有查询。

     代码如下 复制代码

    <?php
    include_once("conn.php");

    $id=$_GET[id];
    $conn->autocommit(false);
    if(!$conn->query("delete from tb_sco where id='".$id."'"))
    {
      $conn->rollback();
    }
    if(!$conn->query("delete from tb_stu where id='".$id."'"))
    {
      $conn->rollback();
    }
      $conn->commit();
      $conn->autocommit(true);
      echo "ok"
    ?>

  • 相关阅读:
    [BZOJ1143/2718]祭祀river/毕业旅行
    [BZOJ4403]序列统计
    [BZOJ2006][NOI2010]超级钢琴
    [BZOJ2005][NOI2010]能量采集
    [BZOJ3631][JLOI2014]松鼠的新家
    第一个spring,总结!
    第一个spring,第五天。
    第一次spring,第三天。
    第一个spring,第一天。
    软件工程课程设计——第一个Spring
  • 原文地址:https://www.cnblogs.com/bk7788/p/6512720.html
Copyright © 2020-2023  润新知