事務控制語句


語法

commit; 提交(確認操作,寫到硬盤上)
rollback;  回滾(回退)
savepoint; 保存點名
rollback  to ;   回滾(回退)到某個點

事務的四大特性

    transaction 事務(交易)

(是一組語句組成的主體)DML才有事務,select語句,DDL語句是沒有的,它們一旦操作就自動提交

  • 原子性

事務中的語句是一個整體,要么一起成功,要么一起失敗就像A轉賬到B對應的操作簡單地看有:

update account set money=money-5000 
where ano/*賬戶名*/=’A’ ;

- - 這里不能提交,因為不能確保后面的會成功
- -執行狀態保留為a

update account set money=money+5000 
where ano/*賬戶名*/=’B’ ;

- - 這兩個操作要么一起成功,要么一起失敗
- -執行狀態保留為b

****偽代碼:****
if(a&&b){
    commit;
}else{
    ollback;
}

淘寶上買東西和結賬也是一樣
  • 隔離性

當進行dml操作時,如果沒有提交,那對另外一個事務而言數據是不可見的(自己可以看操作后的數據,並且給數據加了鎖,不提交自己不能修改,別人也是看不見、不能修改的)

  • 持久性
  • 一致性

保存點  savepoint  保存點名

能打破原子性,允許部分成功,部分失敗(大部分情況下要遵循原子性,但有的時候也有要突破的)

insert   /*發送短信*/
update
savepoint  shoufei  /*收費*/
insert   /*收到短信*/
- - 執行狀態為c

insert  ...
if(!c){
rollback  to shoufei;
- - 到收費斷點后面的語句全部不執行了
}
commit ;  /*一定會提交*/

 

查詢一下表的現在的狀態:

select * from empn;

 

傳入兩個數據並保存點:

insert into empn values(2, niuniu, 2345678);

 

回退到保存點a,存入的結果是存入一個數據:

rollback to a;
commit;
select * from empn;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM