版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、事務(wù),2,目標(biāo),理解事務(wù)的概念 掌握如何創(chuàng)建事務(wù),3,1、為什么需要事務(wù),銀行轉(zhuǎn)帳,例如,銀行轉(zhuǎn)帳問題: 假定資金從帳戶A轉(zhuǎn)到帳戶B,至少需要兩步: 帳戶A的資金減少 然后帳戶B的資金相應(yīng)增加,帳戶A,帳戶B,4,假定張三的帳戶直接轉(zhuǎn)帳1000元到李四的帳戶,1、為什么需要事務(wù),CREATE TABLE bank ( customerName CHAR(10), -顧客姓名 currentMoney MONEY -當(dāng)前余額) GO ALTER TABLE bank ADD CONSTRAINT CK_currentMoney CHECK(currentMoney=1) GO INSERT IN
2、TO bank(customerName,currentMoney) VALUES(張三,1000) INSERT INTO bank(customerName,currentMoney) VALUES(李四,1),創(chuàng)建帳戶表,存放用戶的帳戶信息,添加約束:根據(jù)銀行規(guī)定,帳戶余額不能少于1元,否則視為銷戶,張三開戶,開戶金額為1000元 ;李四開戶,開戶金額1元,5,1、為什么需要事務(wù),目前兩個帳戶的余額總和為:1000+1=1001元,6,1、為什么需要事務(wù),模擬實現(xiàn)轉(zhuǎn)帳 : 從張三的帳戶轉(zhuǎn)帳1000元到李四的帳戶,/*-轉(zhuǎn)帳測試:張三轉(zhuǎn)賬1000元給李四-*/ -我們可能會這樣這樣編寫語句
3、 -張三的帳戶少1000元,李四的帳戶多1000元 UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=張三 UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四 GO -再次查看轉(zhuǎn)帳后的結(jié)果。 SELECT * FROM bank GO,請問:執(zhí)行轉(zhuǎn)帳語句后,張三、李四的帳戶余額為多少?,張三的帳戶沒有減少 但李四的帳戶卻多了1000元 100010012001元 總額多出了1000元!,7,1、為什么需要事務(wù),-張三的帳戶減少1
4、000元,李四的帳戶增加1000元 UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=張三 UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四 GO,錯誤原因分析:,UPDATE語句違反約束:余額=1元,執(zhí)行失敗,所以張三還是1000元,繼續(xù)往下執(zhí)行:執(zhí)行成功,所以李四變?yōu)?001元,如何解決呢?使用事務(wù),8,2、什么是事務(wù),事務(wù)(TRANSACTION)是作為單個邏輯工作單元執(zhí)行的一系列操作 這些操作作為一個整體一起向系統(tǒng)提交
5、,要么都執(zhí)行、要么都不執(zhí)行 事務(wù)是一個不可分割的工作邏輯單元,轉(zhuǎn)帳過程就是一個事務(wù)。 它需要兩條UPDATE語句來完成,這兩條語句是一個整體,如果其中任一條出現(xiàn)錯誤,則整個轉(zhuǎn)帳業(yè)務(wù)也應(yīng)取消,兩個帳戶中的余額應(yīng)恢復(fù)到原來的數(shù)據(jù),從而確保轉(zhuǎn)帳前和轉(zhuǎn)帳后的余額不變,即都是1001元。,9,3、事務(wù)的特性,事務(wù)必須具備以下四個屬性,簡稱ACID 屬性: 原子性(Atomicity):事務(wù)是一個完整的操作。事務(wù)的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行 一致性(Consistency):當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài) 隔離性(Isolation):對數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離
6、的,這表明事務(wù)必須是獨立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù) 永久性(Durability):事務(wù)完成后,它對數(shù)據(jù)庫的修改被永久保持,事務(wù)日志能夠保持事務(wù)的永久性,10,4、如何創(chuàng)建事務(wù),T-SQL使用下列語句來管理事務(wù): 開始事務(wù):BEGIN TRANSACTION 提交事務(wù):COMMIT TRANSACTION 回滾(撤銷)事務(wù):ROLLBACK TRANSACTION 一旦事務(wù)提交或回滾,則事務(wù)結(jié)束。 判斷某條語句執(zhí)行是否出錯: 使用全局變量ERROR; ERROR只能判斷當(dāng)前一條T-SQL語句執(zhí)行是否有錯,為了判斷事務(wù)中所有T-SQL語句是否有錯,我們需要對錯誤進(jìn)行累計; 如: S
7、ET errorSum=errorSum+error,11,4、如何創(chuàng)建事務(wù),使用事務(wù)解決銀行轉(zhuǎn)帳問題,BEGIN TRANSACTION print 查看轉(zhuǎn)帳事務(wù)前的余額 SELECT * FROM bank /*-定義變量,用于累計事務(wù)執(zhí)行過程中的錯誤-*/ DECLARE errorSum INT SET errorSum=0 -初始化為0,即無錯誤 /*-轉(zhuǎn)帳:張三的帳戶少1000元,李四的帳戶多1000元*/ UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=張三 SET errorSum=errorS
8、um+error UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四 SET errorSum=errorSum+error -累計是否有錯誤,開始事務(wù)(指定事務(wù)從此處開始,后續(xù)的T-SQL語句都是一個整體),累計是否有錯誤,12,print 查看轉(zhuǎn)帳事務(wù)過程中的余額 SELECT * FROM bank IF errorSum0 -如果有錯誤 BEGIN print 交易失敗,回滾事務(wù) ROLLBACK TRANSACTION END ELSE BEGIN print 交易成功,提交事務(wù),寫入硬盤,永久的保存 COMMIT TRANSACTION END print 查看轉(zhuǎn)帳事務(wù)后的余額 SELECT * FROM bank GO,4、如何創(chuàng)建事務(wù),根據(jù)是否有錯誤,確定事務(wù)是提交還是撤銷,如果有錯,則回滾操作,事務(wù)結(jié)束,如果成功,則提交操作,事務(wù)結(jié)束,13,4、如何創(chuàng)建事務(wù),轉(zhuǎn)帳事務(wù)前,轉(zhuǎn)帳事務(wù)過程中,轉(zhuǎn)帳事務(wù)結(jié)束后,演示:轉(zhuǎn)帳1000,轉(zhuǎn)帳失敗的情況,14,4、如何創(chuàng)建事務(wù),轉(zhuǎn)帳事務(wù)前,轉(zhuǎn)帳事務(wù)過程中,轉(zhuǎn)帳事務(wù)結(jié)束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年北方工業(yè)大學(xué)關(guān)于招聘高鋼中心實驗室科研助理的備考題庫及答案詳解一套
- 2026年中國地質(zhì)大學(xué)(武漢)公共管理學(xué)院面向海內(nèi)外誠聘英才備考題庫及答案詳解1套
- 2025年常州市體育局下屬事業(yè)單位公開招聘工作人員備考題庫及1套完整答案詳解
- 2026年北京體育大學(xué)醫(yī)院(社區(qū)衛(wèi)生服務(wù)中心)合同制人員公開招聘備考題庫帶答案詳解
- 2026年關(guān)于內(nèi)江市部分市本級事業(yè)單位公開選調(diào)工作人員14人的備考題庫及一套參考答案詳解
- 2026年佛岡縣石角鎮(zhèn)公開招聘新城社區(qū)專職網(wǎng)格員備考題庫及完整答案詳解一套
- 2026年廈門一中招聘合同制膠印員備考題庫及參考答案詳解
- 2026年內(nèi)江鑫永凌建設(shè)開發(fā)有限公司招聘工作人員備考題庫帶答案詳解
- 2026年峨山彝族自治縣林業(yè)和草原局公開招聘綜合應(yīng)急救援隊員備考題庫完整答案詳解
- 2026年安溪縣蘆田衛(wèi)生院招聘護(hù)士備考題庫及參考答案詳解一套
- 羅茨鼓風(fēng)機(jī)行業(yè)發(fā)展趨勢報告
- 慢性阻塞性肺疾病患者非肺部手術(shù)麻醉及圍術(shù)期管理的專家共識
- 燈謎大全及答案1000個
- 中建辦公商業(yè)樓有限空間作業(yè)專項施工方案
- 急性胰腺炎護(hù)理查房課件ppt
- 初三數(shù)學(xué)期末試卷分析及中考復(fù)習(xí)建議課件
- GB/T 4074.8-2009繞組線試驗方法第8部分:測定漆包繞組線溫度指數(shù)的試驗方法快速法
- 第十章-孤獨癥及其遺傳學(xué)研究課件
- 人教版四年級上冊語文期末試卷(完美版)
- 防空警報系統(tǒng)設(shè)計方案
- 酒店管理用水 酒店廚房定額用水及排水量計算表分析
評論
0/150
提交評論