MySQL数据库事务与锁实例演示

  本次实验主要通过cmd命令终端进行数据库的“事务与锁”的简单演示。

实例演示一:

  首先,在windows下,开启一个cmd命令行终端,登陆MySQL数据库,打开xxx数据库,查询其下的emp表,如下:

      

  然后,输入:set autocommit=false;(非自动commit模式,需要手动提交后才生效)回车,再删除一笔数据:delete from emp where id=11;查询发现id为11的数据确实已删除。

      

  此时,再打开另一个新的cmd命令行终端。同样打开xxx数据库并查询emp表,我们发现,在新的cmd终端中看到的emp表中id为11的数据依然存在!

  

  接着,我们在第一个被打开的cmd终端中输入commit; 然后再查询emp表中的记录,此时发现,无论是在哪个终端查询,结果都一样是查不到id为11的记录了,说明commit之后,delete from emp where id=11;这个删除操作才起作用。

      

 

实例演示二:

  mysql_query("BEGIN");                              //开始一个事务
  mysql_query("SET AUTOCOMMIT=0");        //设置事务不自动commit
  $insert="insert into emp(name,sex,salary,deparment) ('翔宇后生',1,'10000','开发部')";
  mysql_query($insert);
  mysql_query("COMMIT");            //非autocommit模式,必须手动执行COMMIT使操作生效

  $insert="insert into emp(name,sex,salary,deparment) ('翔宇',1,'5000','运营部')";
  $insert="insert into emp(name,sex,salary,deparment) ('后生',1,'6000','设计部')";

  if(mysql_num_rows==0)
  {
    mysql_query("ROLLBACK");      //非autocommit模式,执行ROLLBACK使事务操作无效
  }
  else{
    echo "两笔数据均插入成功!";
  }

  mysql_query("SET AUTOCOMMIT=1");   //恢复autocommit模式
  $insert="insert into emp(name,sex,salary,deparment) ('翔宇先生',1,'100000','总经理')";
  mysql_query($insert);           //不需要手动执行COMMIT就可以使事务操作生效

  注意:执行BEGIN之后,其作用与set autocommit=0相同,而且之后设置set autocommit=0或1时BEGIN无效。因此,一般不使用BEGIN。

 

posted @ 2012-12-28 21:14  翔宇后生  阅读(702)  评论(0编辑  收藏  举报