1、首先數據庫是要支持事務的,如InnoDb,不支持的如Myisam.
2、作用:主要是為了在有關數據庫的組合操作、多表操作中,都需要進行數據處理,以防數據丟失.
3、簡單點的例子:a給b打錢,a數據庫的錢應該減少,b數據庫的錢應該增多,若a數據庫操作成功,但是b的操作失敗,這樣就會出現問題.
4、事務是DBMS得執行單位,一般來說,事務是必須滿足4個條件(ACID).
a.原子性(Autmic):事務在執行性,要做到“要么不做,要么全做”,不允許事務部分執行.
b.一致性(Consistency):事務得操作應該使使數據庫從一個一致狀態轉變倒另一個一致得狀態,修改的數據之間應該有所關聯.
c.隔離性(Isolation):如果多個事務并發執行,應象各個事務獨立執行一樣.
d.持久性(Durability):一個成功執行得事務對數據庫得作用是持久得,即使數據庫應故障出錯,也應該能夠恢復.
5、實例:
- //實例化的數據庫對象
- $model = new Model();
- //開啟事務
- $model->startTrans();
- //默認結果
- $judge = true;
- //數據操作
- $sql1 ="delete from TableOne where ...";
- $sql2 ="delete from TableTwo where ...";
- //執行數據操作
- $result1 = $model->query($sql1);
- if(!$result1) $judge = false;
- $result2 = $model->query($sql2);
- if(!$result2) $judge = false;
- if($judge){
- //如果2條都執行成功,則提交完成數據庫操作
- //Vevb.com
- $db->commit();
- }else{
- //如果有其中一條執行失敗,則rollback,所有數據還原到 sql1和sql2都沒執行的狀態。
- $db->rollback();
- }
新聞熱點
疑難解答
圖片精選