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
非常感謝作者!