mysql事物實現大致邏輯測試

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

非常感謝作者!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章