事務控制語句

語法

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

事務的四大特性

    transaction 事務(交易)

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

  • 原子性

事務中的語句是一個總體,要麼一塊兒成功,要麼一塊兒失敗就像A轉帳到B對應的操做簡單地看有:blog

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

- - 這裏不能提交,由於不能確保後面的會成功
- -執行狀態保留爲a事務

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

- - 這兩個操做要麼一塊兒成功,要麼一塊兒失敗
- -執行狀態保留爲bit

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

淘寶上買東西和結帳也是同樣
  • 隔離性

當進行dml操做時,若是沒有提交,那對另一個事務而言數據是不可見的(本身能夠看操做後的數據,而且給數據加了鎖,不提交本身不能修改,別人也是看不見、不能修改的)io

  • 持久性
  • 一致性

保存點  savepoint  保存點名

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

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

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

 

查詢一下表的如今的狀態:date

select * from empn;

 

傳入兩個數據並保存點:select

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

 

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

rollback to a;
commit;
select * from empn;

相關文章
相關標籤/搜索