mysql數據事務語言DTL(Data Transaction Language)

事務:就是將一系列的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 “事務執行失敗!數據沒有被修改”;
}


 

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