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
http://www.cnblogs.com/in-loading/archive/2012/02/21/2361702.html
非常感谢作者!