更新時(shí)間:2020-06-03 來源:黑馬程序員 瀏覽量:
1、場(chǎng)景
一組sql(增刪改)要么都執(zhí)行,要么都不執(zhí)行。
場(chǎng)景: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ù)的完整性,具有原子性。
猜你喜
運(yùn)維學(xué)科課程再度升級(jí)!學(xué)生平均薪資9539,6月1日前報(bào)名可免費(fèi)學(xué)
2020-05-25Mysql視頻教程:6天掌握mysql基礎(chǔ)視頻
2020-05-21什么是以太網(wǎng)?以太網(wǎng)的發(fā)展歷史介紹【運(yùn)維培訓(xùn)】
2020-05-11服務(wù)器多網(wǎng)卡服務(wù)策略【linux云計(jì)算機(jī)+運(yùn)維開發(fā)】
2020-04-30K8s控制器類型及演示[IT運(yùn)維培訓(xùn)]
2020-04-30Docker stack 一鍵編排Inmp【linux云計(jì)算+運(yùn)維開發(fā)】
2020-04-29