MySQL數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目式教程課件:創(chuàng)建并使用事務(wù)_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目式教程課件:創(chuàng)建并使用事務(wù)_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目式教程課件:創(chuàng)建并使用事務(wù)_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目式教程課件:創(chuàng)建并使用事務(wù)_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目式教程課件:創(chuàng)建并使用事務(wù)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

創(chuàng)建并使用事務(wù)

7.5

創(chuàng)建并使用事務(wù)在MySQL數(shù)據(jù)庫(kù)中,當(dāng)多個(gè)用戶訪問(wèn)同一份數(shù)據(jù)時(shí),一個(gè)用戶在更改數(shù)據(jù)的過(guò)程中可能有其他用戶同時(shí)發(fā)起更改請(qǐng)求,為了保證數(shù)據(jù)的更新從一個(gè)一致性狀態(tài)變更為另一個(gè)一致性狀態(tài),這時(shí)必須引入事務(wù)的概念。在MySQL編程中事務(wù)編程已經(jīng)成為不可缺少的一部分。它能保證數(shù)據(jù)庫(kù)從一種一致性狀態(tài)轉(zhuǎn)換為另一種一致性狀態(tài)。7.5

創(chuàng)建并使用事務(wù)事務(wù)就是一個(gè)操作序列,這些操作要么都執(zhí)行,要么都不執(zhí)行,它是一個(gè)不可分割的工作單位。例如,你給朋友轉(zhuǎn)1000元錢,按照正常的操作流程是你的賬戶減去1000元錢,朋友的賬戶增加1000元錢,本身這兩個(gè)操作是完全獨(dú)立的兩次數(shù)據(jù)庫(kù)更新操作,現(xiàn)在如果你的賬戶扣減1000元錢成功,但是你朋友的賬戶增加1000元失敗,就會(huì)出現(xiàn)數(shù)據(jù)對(duì)不上的問(wèn)題,此時(shí)就需要用到數(shù)據(jù)庫(kù)中的事務(wù),事務(wù)把這兩個(gè)操作放到一個(gè)事務(wù)內(nèi)執(zhí)行,要么全部成功,要么全部失敗,從而避免數(shù)據(jù)對(duì)不上的問(wèn)題,這個(gè)問(wèn)題解決了,這就是事務(wù)。1.事務(wù)的概念7.5

創(chuàng)建并使用事務(wù)(1)原子性(Atomicity)原子性是指事務(wù)是一個(gè)不可分割的工作單位,要么成功,要么失敗,是不存在中間狀態(tài)的。(2)一致性(Consistency)一致性是指事務(wù)執(zhí)行前后,數(shù)據(jù)從一個(gè)合法性狀態(tài)變換到另一個(gè)合法性狀態(tài),這種狀態(tài)是語(yǔ)義上的,而不是語(yǔ)法上的。(3)隔離性(Isolation)隔離性是指事務(wù)的執(zhí)行不能被其他事務(wù)干擾,即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。2.事務(wù)的ACID特性7.5

創(chuàng)建并使用事務(wù)(4)持久性(Durability)持久性是指事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久性,接下來(lái)的其他操作和數(shù)據(jù)庫(kù)故障不應(yīng)該對(duì)其有任何影響。持久性是通過(guò)數(shù)據(jù)庫(kù)重做日志來(lái)保證的,當(dāng)我們通過(guò)事務(wù)對(duì)數(shù)據(jù)進(jìn)行修改的時(shí)候,首先會(huì)將數(shù)據(jù)庫(kù)的變換信息記錄到重做日志中,然后再對(duì)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的行進(jìn)行修改。這樣做的好處是,即使數(shù)據(jù)庫(kù)系統(tǒng)崩潰,數(shù)據(jù)庫(kù)重啟后也能找到?jīng)]有更新到數(shù)據(jù)庫(kù)系統(tǒng)中的重做日志,重新執(zhí)行,從而使事務(wù)具有持久性。2.事務(wù)的ACID特性7.5

創(chuàng)建并使用事務(wù)(1)關(guān)閉自動(dòng)提交在MySQL的默認(rèn)設(shè)置下,事務(wù)都是自動(dòng)提交的,即執(zhí)行任意一條更新語(yǔ)句后會(huì)馬上執(zhí)行COMMIT操作,提交到數(shù)據(jù)庫(kù)中。3.事務(wù)控制語(yǔ)句SETAUTOCOMMIT={0|1};語(yǔ)法說(shuō)明:當(dāng)賦值為0時(shí),關(guān)閉自動(dòng)提交,當(dāng)賦值為1時(shí)打開自動(dòng)提交。(2)開始事務(wù)STARTTRANSACTION;語(yǔ)法說(shuō)明:STARTTRANSACTION命令在開啟事務(wù)的同時(shí),將關(guān)閉自動(dòng)提交。7.5

創(chuàng)建并使用事務(wù)(3)提交事務(wù)COMMIT[WORK];(4)設(shè)置保存點(diǎn)SAVEPOINT<保存點(diǎn)名稱>;語(yǔ)法說(shuō)明:用于在事務(wù)內(nèi)設(shè)置保存點(diǎn)。(5)回滾事務(wù)ROLLBACK;|ROLLBACKTOSAVEPOINT<保存點(diǎn)名稱>;語(yǔ)法說(shuō)明:當(dāng)條件回滾只影響事務(wù)的一部分時(shí),事務(wù)不需要全部撤銷已執(zhí)行的操作,可以讓事務(wù)回滾到指定位置,此時(shí),需要在事務(wù)中設(shè)定保存點(diǎn)(SAVEPOINT)。保存點(diǎn)所在位置之前的事務(wù)語(yǔ)句不用回滾,即保存點(diǎn)之前的操作被視為有效的。7.5

創(chuàng)建并使用事務(wù)1.刪除“student”表中所有數(shù)據(jù),利用ROLLBACK來(lái)撤銷此刪除語(yǔ)句操作?!救蝿?wù)實(shí)施】(1)打開Navicat查詢編輯器窗口。(2)在查詢編輯器窗口輸入以下SQL語(yǔ)句:STARTTRANSACTION;DELETEFROMstudent;ROLLBACK;執(zhí)行以上語(yǔ)句后,打開student表,可以看到student表中數(shù)據(jù)并沒(méi)有被刪除,如下圖所示。7.5

創(chuàng)建并使用事務(wù)7.5

創(chuàng)建并使用事務(wù)2.創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,該存儲(chǔ)函數(shù)向student表中插入兩條學(xué)生信息,并進(jìn)行測(cè)試(1)打開Navicat查詢編輯器窗口。(2)在查詢編輯器窗口輸入以下SQL語(yǔ)句并執(zhí)行。CREATEPROCEDUREp_transaction_test()MODIFIESSQLDATABEGIN DECLARECONTINUEHANDLERFOR1265 BEGIN ROLLBACK; END;

7.5

創(chuàng)建并使用事務(wù) STARTTRANSACTION; INSERTINTOstudentVALUES('23000106','王云','男','2004-03-31','信息工程系','22大數(shù)據(jù)1',17); INSERTINTOstudentVALUES('23000107','李浩','男','2004-04-13','信息工程系','22大數(shù)據(jù)1','17歲'); COMMIT;END;(3)執(zhí)行調(diào)用存儲(chǔ)過(guò)程語(yǔ)句,然后查看student表中信息,如下圖所示。CALLp_transaction_test();7.5

創(chuàng)建并使用事務(wù)從圖中可以看出,調(diào)用存儲(chǔ)過(guò)程,2條數(shù)據(jù)并沒(méi)有插入到數(shù)據(jù)庫(kù)中,因?yàn)榈?條插入語(yǔ)句中最后一個(gè)字段輸入格式有誤,由于事務(wù),所以這兩條語(yǔ)句都不執(zhí)行。7.5

創(chuàng)建并使用事務(wù)修改存儲(chǔ)過(guò)程p_transaction_test,將第2條插入語(yǔ)句修改正確后,調(diào)用該存儲(chǔ)過(guò)程,然后查看student表中信息,如下圖所示。INSERTINTOstudentVALUES('23000106','王云','男','2004-03-31','信息工程系','22大數(shù)據(jù)1',17);INSERTINTOs

溫馨提示

  • 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)論