版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度排水溝蓋板抗老化實(shí)驗(yàn)檢測(cè)合同3篇
- 二零二五年度農(nóng)村土地置換與鄉(xiāng)村旅游發(fā)展合同
- 2025年度豬肉冷鏈倉(cāng)儲(chǔ)與運(yùn)輸一體化服務(wù)合同3篇
- 2025年度特色禽類養(yǎng)殖養(yǎng)雞場(chǎng)地租賃及品牌合作合同3篇
- 二零二五年度農(nóng)產(chǎn)品銷售兼職合同3篇
- 二零二五年度醫(yī)療器械包裝設(shè)計(jì)與生產(chǎn)服務(wù)合同3篇
- 2025年度星巴克咖啡店品牌授權(quán)與產(chǎn)品銷售合同3篇
- 2025年度塑料模具設(shè)計(jì)與制造服務(wù)合同范本3篇
- 2024年中國(guó)涂層鋼管市場(chǎng)調(diào)查研究報(bào)告
- 2024年沈陽(yáng)市第七人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 機(jī)器加盟協(xié)議合同范例
- 2024-2030年中國(guó)油田服務(wù)市場(chǎng)發(fā)展?jié)摿εc前景戰(zhàn)略規(guī)劃分析報(bào)告
- 黑龍江省哈爾濱市道里區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷
- 碼頭操作管理制度
- 全過(guò)程造價(jià)咨詢實(shí)施方案
- 藥品運(yùn)送工作指導(dǎo)方案模版(4篇)
- 浙江工業(yè)大學(xué)之江學(xué)院《建筑結(jié)構(gòu)選型》2023-2024學(xué)年第一學(xué)期期末試卷
- 倉(cāng)庫(kù)管理培訓(xùn)課件
- 2024年居間服務(wù)合同:律師事務(wù)所合作與業(yè)務(wù)推廣
- 大型活動(dòng)音響設(shè)備保養(yǎng)方案
- 安全生產(chǎn)專(兼)職管理人員職責(zé)
評(píng)論
0/150
提交評(píng)論