事務:就是將一系列的sql語句當作“一句”來執行的一種機制----該系列語句要麼全部執行成功,要麼一個都不執行。
事務的特點:原子性(要麼全部執行成功,要麼一個都不執行)、一致性(數據保持邏輯上的合理性)、隔離性(多個事務同時併發執行,每個事物獨立執行)、持久性(硬盤數據的更改)
事物模式:在cmd命令行模式中,是否開啓了“一條語句就是一個事務”這個功能
默認情況下,這個模式是開啓的,稱爲“自動提交模式”;
關閉後,就是“非自動提交模式”---需要人爲提交。(在執行sql語句後,需要人爲提交,即執行語句commit;)
關閉該模式:Set autocommit=0;
事務執行的基本流程:(針對增刪改語句)
1.開啓一個事務:starttransaction;//也可以寫成begin;
2.執行多條增刪改語句;//也就是希望這多條語句要作爲一個“不可分割”的整體去執行的任務
3.判斷這些語句執行的結果情況:
If(沒有出錯){
Commit; //提交事務,此時就是一次性完成;
}else{
Rollback; //回滾事務,不執行
}
具體分兩種情況:
在cmd中,執行語句沒有錯誤,直接commit,有錯誤,執行rollback;
在php中:
$link=mysql_connect(“localhost”,”root”,”000”);
Mysql_query(“set names utf8”);
Mysql_query(“use php39“);
$sql=” start transaction;”;
Mysql_query($sql);
$sql1=” insert into tab_int(f1,f2,f3)values(15,25,35);”;
$result1=Mysql_query($sql1);
$sql2=” insert into tab_int(f1,f2,f3)values(16,26,36);”;
$result2=Mysql_query($sql2);
If($result1 && $result2){
mysql_query(“commit;”);
echo “事務執行成功!所有任務都已完成”;
}else{
mysql_query(“rollback;”);
echo “事務執行失敗!數據沒有被修改”;
}