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。

 

转载于:https://www.cnblogs.com/senbiao/archive/2012/12/28/2837881.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值