代码改变世界

mysql锁表 和mysql事物操作 -> lvyantao.cn

2010-02-28 23:09  LvSir  阅读(883)  评论(0编辑  收藏  举报

用PHP实现mysql锁表

        //执行SQL语句 锁掉stat_num表

     $sql = "LOCK TABLES stat_num WRITE";   //表的WRITE锁定,阻塞其他所有mysql查询进程
     $DatabaseHandler->exeCute($sql); 

    //执行更新或写入操作

     $sql = "UPDATE stat_num SET `correct_num`=`correct_num`+1 WHERE stat_date='{$cur_date}'";
     $DatabaseHandler->exeCute($sql);

     //当前请求的所有写操作做完后,执行解锁sql语句

     $sql = "UNLOCK TABLES";
     $DatabaseHandler->exeCute($sql);

 

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!
$lnk = mysql_connect("localhost", "root", "");
mysql_select_db("test");
mysql_query("BEGIN");
$query = mysql_query("INSERT INTO test VALUES(1, 'yangjun')");
$q1 = mysql_error();
mysql_query("INSERT INTO test VALUES(1, 'yangjun')");
$q2 = mysql_error();
mysql_query("INSERT INTO test VALUES(2, '杨俊')");
$q3 = mysql_error();
if (!$q1 && !$q2 && !$q3) {
mysql_query("COMMIT"); //全部成功,提交执行结果
} else {
mysql_query("ROLLBACK"); //有任何错误发生,回滚并取消执行结果