教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

mysql中事務(wù)怎么用?【運(yùn)維培訓(xùn)】

更新時間:2020年06月03日14時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)密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。

事務(wù)的優(yōu)點(diǎn)

(1) A(atomicity) 原子性。事務(wù)里面的操作,要么全部成功執(zhí)行,要么全部失敗回滾,不可以只執(zhí)行其中的一部分。

(2) C(consistency) 一致性。一個事務(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,就在同一個事務(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;

mysql事務(wù)1


讓張三少50塊,李四多50塊

update info set money=money-50 where id=1;
update info set money=money+50 where id=2;

mysql事務(wù)2


查詢sql執(zhí)行的結(jié)果

mysql事務(wù)3


重新打開一個mysql客戶端查看數(shù)據(jù);

mysql事務(wù)4


數(shù)據(jù)并未發(fā)生變化

提交事務(wù):commit

1591157239703_mysql事務(wù)05.jpg


另一個客戶端中的數(shù)據(jù)

1591157249447_mysql事務(wù)06.jpg


例題:讓張三給李四轉(zhuǎn)50塊失敗

1591157260639_mysql事務(wù)07.jpg


另一個客戶端的數(shù)據(jù):

1591157272217_mysql事務(wù)08.jpg


最后執(zhí)行回滾,轉(zhuǎn)賬失敗

1591157288286_mysql事務(wù)09.jpg


總結(jié):事務(wù)保持?jǐn)?shù)據(jù)的完整性,具有原子性。


猜你喜歡:

服務(wù)器是什么?服務(wù)器空間又是什么?

DNS服務(wù)器是什么?DNS劫持又是什么?

什么是域名?域名和URL有什區(qū)別?

0 分享到:
和我們在線交談!