您的位置:首页 > 数据库 > MySQL

mysql事物实现大致逻辑测试

2014-09-17 17:39 141 查看
mysql事物实现语法
1)begin sql语句 rollback 或者commit
START TRANSACTION sql语句 rollback 或者commit
2)修改AUTOCOMMIT 自动提交是否开启的 #本文未涉及
个人对此逻辑理解
开始事物
提交每一个sql,并记录提交成功与否
对所有sql提交结果,进行判断
都执行成功,则commit#提交事务,这时所有操作才会进行
否则(有任何一个执行失败),则rollback。进行事务回滚

以下附上测试表结构和php代码
表结构
CREATE TABLE `test01` (
`01` varchar(500) DEFAULT NULL,
`02` varchar(500) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
php代码
<?

$lnk = mysql_connect("localhost", "root", "");

mysql_select_db("test");

mysql_query("BEGIN");
//mysql_query("START TRANSACTION");
$query = mysql_query("update test01 set `01` = 12");
$q1 = mysql_error();
if ($q1) {
echo "$q1"."\n";
}

$query = mysql_query("update test01 set `02` = 3");
$q2 = mysql_error();
if ($q2) {
echo "$q2"."\n";
}

if (!$q1 && !$q2) {
mysql_query("COMMIT"); //全部成功,提交执行结果
echo "commit"."\n";
} else {
mysql_query("ROLLBACK"); //有任何错误发生,回滚并取消执行结果
echo "rollback"."\n";
}
//var_dump($q1, $q2);
mysql_close($lnk);
?>

修改sql语句,让某条执行sql出现错误,测试结果

本文参考:http://www.111cn.net/database/mysql/53781.htm
/article/5820466.html
非常感谢作者!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: