zoukankan      html  css  js  c++  java
  • php+mysql事务处理例子详细分析实例

    一、数据引擎innodb用begin,rollback,commit来实现提交事务处理,begin开始事务后出现错误就rollback事务回滚或者没有错误就commit提事务提交确认完成。
      start transaction 开始是事务begin和end之间是执行的语句块,set autocommit=0不让事务自动提交设置后要在结束set autocommit=1。
      下面是针对支持事务处理的数据表引擎例子。
    mysql_query("start transaction");
    mysql_query("set autocommit=0");
    mysql_query("begin"); 
    $sql = "insert into student ( name,num) values ( 'test1', '0')";
    $sql2 = "insert into student ( name,num) values ( null, '0')";//写错
    $res = mysql_query($sql);
    $res1 = mysql_query($sql2); 
    if($res && $res1){
        mysql_query("commit");
        echo '提交成功。<br/>';
    }else{
        mysql_query("rollback");
        echo '数据回滚。<br/>';
    }
    mysql_query("set autocommit=1");
    mysql_query("end"); 

    二、对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法:
      MyISAM & InnoDB 都支持,LOCK TABLES可以锁定用于当前线程的表。如果表被其它线程锁定,则造成堵塞,直到可以获取所有锁定为止。UNLOCK TABLES可以释放被当前线程保持的任何锁定。当线程发布另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁。
      下面例子是针对不支持事务提交而使用表锁的例子

    mysql_query("lock tables student write");//锁住student表write 也可以是read
    $sql = "insert into student ( name,num) values ( '三生三世', '0')";
    $res = mysql_query($sql);
    if($res){
        echo '提交成功。!<br/>';
    }else{
        echo '失败!<br/>';
    }
    mysql_query("UNLOCK TABLES");//解除锁定

    上面代码完整的实例下载地址:http://pan.baidu.com/s/1pLkbkKj

    密码:bh49

  • 相关阅读:
    手把手教会你如何通过C#创建Windows Service
    推荐几款软件界面模型设计工具
    visual studio 2010小技巧
    C# 枚举在属性中运用
    C# Stream 和 byte[] 之间的转换
    推荐一款DataGridView的打印解决方案
    VB提高专辑VB编写自定义类(下)
    vb 怎么把长整型转字符串
    Android NAND: nand_dev_load_disk_state, restore failed: size required (3546398242485400641) exceeds device limit (6920
    VB中各种类型的转换
  • 原文地址:https://www.cnblogs.com/sztx/p/9499764.html
Copyright © 2011-2022 走看看