更新時(shí)間:2020年06月03日14時(shí)54分 來源:傳智播客 瀏覽次數(shù):
1、場景
一組sql(增刪改)要么都執(zhí)行,要么都不執(zhí)行。
場景:A有10000元
B有10000元
A向B轉(zhuǎn)賬500,是兩條更新
update bill set 余額=余額-500 where A;
update bill set 余額=余額+500 where B;
這兩條數(shù)據(jù)必須要么都執(zhí)行,要么都不執(zhí)行,如果執(zhí)行了一半,發(fā)生問題,那么執(zhí)行過的sql要回滾。
2、事務(wù)(transaction)的講解
什么是事務(wù)?
事務(wù)是應(yīng)用程序中一系列嚴(yán)密的操作,所有操作必須成功完成,否則在每個(gè)操作中所作的所有更改都會(huì)被撤消。
事務(wù)的優(yōu)點(diǎn)
(1) A(atomicity) 原子性。事務(wù)里面的操作,要么全部成功執(zhí)行,要么全部失敗回滾,不可以只執(zhí)行其中的一部分。
(2) C(consistency) 一致性。一個(gè)事務(wù)的執(zhí)行不應(yīng)該破壞數(shù)據(jù)庫的完整性約束。
(3)I(isolation) 隔離性。通常來說,事務(wù)之間的行為不應(yīng)該互相影響。
(4)D(durability) 持久性。事務(wù)提交之后,需要將提交的事務(wù)持久化到磁盤。即使系統(tǒng)崩潰,提交的數(shù)據(jù)也不應(yīng)該丟失。
使用事務(wù)的好處
在修改數(shù)據(jù)的操作中保持?jǐn)?shù)據(jù)的完整性.
事務(wù)的使用
語法
開啟事務(wù): start transaction 或 begin [work]
sql語句的執(zhí)行
提交事務(wù)commit
回滾事務(wù):rollback;
在事務(wù)開始和結(jié)束之間的這些sql,就在同一個(gè)事務(wù)中。
例題
創(chuàng)建表并且插入數(shù)據(jù)
創(chuàng)建表:
create table info( id int auto_increment primary key, name varchar(5), money decimal(10,2) ); insert into info values(1,'張三',1000); insert into info values(2,'李四',1000);
例題:讓張三給李四成功轉(zhuǎn)50塊
開啟事務(wù):start transaction;
讓張三少50塊,李四多50塊
update info set money=money-50 where id=1; update info set money=money+50 where id=2;
查詢sql執(zhí)行的結(jié)果
重新打開一個(gè)mysql客戶端查看數(shù)據(jù);
數(shù)據(jù)并未發(fā)生變化
提交事務(wù):commit
另一個(gè)客戶端中的數(shù)據(jù)
例題:讓張三給李四轉(zhuǎn)50塊失敗
另一個(gè)客戶端的數(shù)據(jù):
最后執(zhí)行回滾,轉(zhuǎn)賬失敗
總結(jié):事務(wù)保持?jǐn)?shù)據(jù)的完整性,具有原子性。
猜你喜歡:
進(jìn)程管理工具Supervisor安裝部署教程【運(yùn)維培訓(xùn)】
2020-04-28Kubernetes網(wǎng)絡(luò)模型詳細(xì)介紹[IT運(yùn)維培訓(xùn)]
2020-04-04如何通過U盤安裝物理電腦linux系統(tǒng)?
2020-04-04API服務(wù)網(wǎng)關(guān)實(shí)現(xiàn)之APISIX安裝和部署
2020-04-04IPV6是什么?如何使用IPV6訪問互聯(lián)網(wǎng)?
2020-04-045分鐘6步強(qiáng)制刪除kubernetes NameSpace小技巧
2020-04-04北京校區(qū)