《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第12章 MySQL事務(wù)_第1頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第12章 MySQL事務(wù)_第2頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第12章 MySQL事務(wù)_第3頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第12章 MySQL事務(wù)_第4頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第12章 MySQL事務(wù)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MySQL事務(wù)

事務(wù)的概念

事務(wù)的概念首先看一個(gè)現(xiàn)實(shí)中銀行轉(zhuǎn)賬的業(yè)務(wù)流程的例子:A帳號(hào)需要往B賬戶中轉(zhuǎn)賬1000元,這包含兩個(gè)過(guò)程: A帳號(hào)中減去1000元; B賬戶中增加1000元。這兩個(gè)過(guò)程的順序也可以對(duì)調(diào)。如果想要正確實(shí)現(xiàn)轉(zhuǎn)賬功能,則必須保證這兩個(gè)過(guò)程都要能夠完成。如果只完成了其中的一個(gè)過(guò)程,那么這個(gè)轉(zhuǎn)賬操作肯定是錯(cuò)誤的。事務(wù)的概念為了解決這種類似的問(wèn)題,數(shù)據(jù)庫(kù)管理系統(tǒng)提出了事務(wù)的概念:將一組相關(guān)操作綁定在一個(gè)事務(wù)中,為了使事務(wù)成功,則必須成功執(zhí)行該事務(wù)中的所有操作。換句話說(shuō),該事務(wù)中的所有操作要么都執(zhí)行、要么都不執(zhí)行。MySQL事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù),事務(wù)處理可以用來(lái)維護(hù)數(shù)據(jù)庫(kù)的完整性。在MySQL中只有使用InnoDB存儲(chǔ)引擎的數(shù)據(jù)庫(kù)或表才支持事務(wù)。謝謝MySQL事務(wù)

事務(wù)的特性

事務(wù)的特性一般來(lái)說(shuō),事務(wù)的處理必須滿足四原則,即原子性(A)、一致性(C)、隔離性(I)和持久性(D),簡(jiǎn)稱ACID原則。原子性(Atomicity):事務(wù)必須是原子工作單元,事務(wù)中的操作要么全部執(zhí)行,要么全不執(zhí)行,不可以只完成部分操作。一致性(Consistency):事務(wù)開(kāi)始前,數(shù)據(jù)庫(kù)處于一致性的狀態(tài);事務(wù)結(jié)束后,數(shù)據(jù)庫(kù)必須仍處于一致性狀態(tài)。例如,銀行轉(zhuǎn)賬前后的兩個(gè)帳戶金額之和應(yīng)該保持不變。隔離性(Isolation):系統(tǒng)必須保證事務(wù)不受其他并發(fā)執(zhí)行事務(wù)的影響,即當(dāng)多個(gè)事務(wù)同時(shí)運(yùn)行時(shí),各個(gè)事務(wù)之間相互隔離,不可互相干擾。持久性(Durability):一個(gè)已完成的事務(wù)對(duì)數(shù)據(jù)所做的任何變動(dòng),在系統(tǒng)中是永久有效的。事務(wù)的特性事務(wù)的四原則保證了一個(gè)事務(wù)或者成功提交,或者失敗回滾,二者必居其一。當(dāng)事務(wù)提交成功后,它對(duì)數(shù)據(jù)的修改則是永久有效的;當(dāng)事務(wù)提交失敗時(shí),它對(duì)數(shù)據(jù)的修改則都會(huì)恢復(fù)到該事務(wù)執(zhí)行前的狀態(tài)。謝謝MySQL事務(wù)

事務(wù)的執(zhí)行模式

本節(jié)內(nèi)容1.隱式事務(wù)2.顯式事務(wù)事務(wù)的執(zhí)行模式在MySQL命令行的默認(rèn)設(shè)置下,事務(wù)都是自動(dòng)提交的,即執(zhí)行SQL語(yǔ)句后就會(huì)馬上執(zhí)行COMMIT操作。隱式事務(wù)是一種自動(dòng)開(kāi)始、自動(dòng)結(jié)束(確認(rèn)或回滾)的事務(wù),一條SQL語(yǔ)句就是一個(gè)隱式事務(wù)。1.隱式事務(wù)事務(wù)的執(zhí)行模式例如,創(chuàng)建課程表course的SQL語(yǔ)句如下:

CREATETABLEcourse( idINTUNSIGNEDNOTNULLAUTO_INCREMENT, cNoCHAR(5)NOTNULL, cNameVARCHAR(30)NOTNULL, creditTINYINTUNSIGNED, remarkVARCHAR(100), PRIMARYKEY(id) );1.隱式事務(wù)說(shuō)明:這條語(yǔ)句本身就構(gòu)成了一個(gè)事務(wù),不過(guò)是一個(gè)隱式事務(wù)。要么正確創(chuàng)建包含5列的數(shù)據(jù)表course,要么不創(chuàng)建任何數(shù)據(jù)表。不可能出現(xiàn)創(chuàng)建了只包含1列、2列或者3列的數(shù)據(jù)表course的情況。事務(wù)的執(zhí)行模式可以使用SET語(yǔ)句來(lái)改變MySQL的自動(dòng)提交模式,其語(yǔ)法格式如下:禁止自動(dòng)提交:SETAUTOCOMMIT=0開(kāi)啟自動(dòng)提交(默認(rèn)值):SETAUTOCOMMIT=11.隱式事務(wù)事務(wù)的執(zhí)行模式顯式事務(wù)是一種顯式地定義事務(wù)開(kāi)始、結(jié)束(確認(rèn)或回滾)的事務(wù)。因此,一個(gè)顯式事務(wù)的語(yǔ)句以BEGIN或者STARTTRANSACTION開(kāi)始,至COMMIT或者ROLLBACK結(jié)束。BEGIN或者STARTTRANSACTION:開(kāi)始一個(gè)事務(wù)COMMIT:事務(wù)確認(rèn)ROLLBACK:事務(wù)回滾2.顯式事務(wù)事務(wù)的執(zhí)行模式使用COMMIT語(yǔ)句提交事務(wù),意味著系統(tǒng)將事務(wù)開(kāi)始以來(lái)所做的所有數(shù)據(jù)修改,將成為數(shù)據(jù)庫(kù)的永久部分。因此COMMIT語(yǔ)句也標(biāo)志著一個(gè)事務(wù)的結(jié)束。只有在所有數(shù)據(jù)修改都完成后、準(zhǔn)備提交給數(shù)據(jù)庫(kù)時(shí),才執(zhí)行這一動(dòng)作。一旦執(zhí)行了該命令,將不能再回滾事務(wù)。使用ROLLBACK語(yǔ)句回滾事務(wù),意味著系統(tǒng)將取消自事務(wù)開(kāi)始以來(lái)所做的所有數(shù)據(jù)修改,并且釋放由事務(wù)控制的資源。因此ROLLBACK語(yǔ)句也標(biāo)志著事務(wù)的結(jié)束。2.顯式事務(wù)事務(wù)的執(zhí)行模式使用保留點(diǎn)SAVEPOINT語(yǔ)句,可以使事務(wù)回滾到設(shè)置的保留點(diǎn)SAVEPOINT、而不影響SAVEPOIN創(chuàng)建前的所做的數(shù)據(jù)修改,不需要放棄整個(gè)事務(wù)。其語(yǔ)法格式如下:設(shè)置一個(gè)保留點(diǎn):SAVEPOINTsavepoint_name;回滾到設(shè)置的保留點(diǎn):ROLLBACKTOsavepoint_name;2.顯式事務(wù)操作案例知識(shí)點(diǎn)概述示例12-1SQL代碼如下:定義一個(gè)事務(wù):向student表中插入一條學(xué)生記錄,再向score表中插入一條該學(xué)生的成績(jī)記錄,最后提交該事務(wù)。說(shuō)明:通過(guò)查詢得知,兩條記錄分別插入到student表和score表中。BEGIN;#開(kāi)始事務(wù)INSERTstudent(id,sNo,sName,sex,birthday,deptName) VALUES(51,'1909123101','李凱','男','2000-11-20','軟件191');INSERTscore(sId,cId,grade)VALUES(51,1,89);COMMIT;#提交事務(wù)操作案例知識(shí)點(diǎn)概述示例12-2SQL代碼如下:定義一個(gè)事務(wù):向student表中插入一條學(xué)生記錄,再向score表中插入一條該學(xué)生的成績(jī)記錄,最后回滾該事務(wù)。說(shuō)明:通過(guò)查詢得知,兩條記錄都沒(méi)有插入到student表和score表中。BEGIN;#開(kāi)始事務(wù)INSERTstudent(id,sNo,sName,sex,birthday,deptName) VALUES(52,'1909123102','張成','男','2000-9-2','軟件191');INSERTscore(sId,cId,grade)VALUES(52,1,95);ROLLBACK;#回滾操作案例知識(shí)點(diǎn)概述示例12-3SQL代碼如下:定義一個(gè)事務(wù):向student表中插入一條學(xué)生記錄,設(shè)置一個(gè)保留點(diǎn)myTranPoint,再向score表中插入一條該學(xué)生的成績(jī)記錄,最后回滾到保留點(diǎn)myTranPoint后再提交該事務(wù)。說(shuō)明:通過(guò)查詢得知,第1條記錄已插入到student表中,但第2條記錄沒(méi)有插入到score表中。BEGIN;#開(kāi)始事務(wù)INSERTstudent(id,sNo,sName,sex,birthday,deptName) VALUES(53,'1909123103','王文','男','200

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論