mysql锁表 和mysql事物操作 -> lvyantao.cn
2010-02-28 23:09 LvSir 阅读(885) 评论(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"); //有任何错误发生,回滚并取消执行结果