




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、事務高級數(shù)據(jù)庫2目標q理解事務的概念q掌握如何創(chuàng)建事務3為什么需要事務q例如,銀行轉(zhuǎn)帳問題: 假定資金從帳戶A轉(zhuǎn)到帳戶B,至少需要兩步:q帳戶A的資金減少q然后帳戶B的資金相應增加 帳戶帳戶A帳戶帳戶B4q 假定張三的帳戶直接轉(zhuǎn)帳假定張三的帳戶直接轉(zhuǎn)帳1000元到李四的帳戶元到李四的帳戶為什么需要事務CREATE TABLE bank( customerName CHAR(10), -顧客姓名 currentMoney MONEY -當前余額)GOALTER TABLE bank ADD CONSTRAINT CK_currentMoney CHECK(currentMoney=1)GOINS
2、ERT INTO bank(customerName,currentMoney) VALUES(張三,1000)INSERT INTO bank(customerName,currentMoney) VALUES(李四,1)創(chuàng)建帳戶表,存放用戶的帳戶信息添加約束:根據(jù)銀行規(guī)定,帳戶余額不能少于1元,否則視為銷戶 張三開戶,開戶金額為1000元 ;李四開戶,開戶金額1元 5為什么需要事務q目前兩個帳戶的余額總和為:目前兩個帳戶的余額總和為:1000+1=1001元元 6為什么需要事務q模擬實現(xiàn)轉(zhuǎn)帳模擬實現(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 bankGO請問:執(zhí)行轉(zhuǎn)帳語句后,張三、李四的帳戶余額為多少?l張三的帳戶沒有減少 l但李四的帳戶卻多了1000元 l100010012001元 總額多出了1000元!7為什么需要事務-張三的
4、帳戶減少1000元,李四的帳戶增加1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=張三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GOq 錯誤原因分析:錯誤原因分析:UPDATE語句違反約束:余額=1元執(zhí)行失敗,所以張三還是執(zhí)行失敗,所以張三還是1000元元繼續(xù)往下執(zhí)行繼續(xù)往下執(zhí)行:執(zhí)行成功,所以李四變?yōu)椋簣?zhí)行成功,所以李四變?yōu)?001元元如何解決呢?使用如何解決呢?使用事務事務8什么是事務q 事務(TRANS
5、ACTION)是作為單個邏輯工作單元執(zhí)行的一系列操作q 這些操作作為一個整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行 q 事務是一個不可分割的工作邏輯單元 轉(zhuǎn)帳過程就是一個事務。它需要兩條UPDATE語句來完成,這兩條語句是一個整體,如果其中任一條出現(xiàn)錯誤,則整個轉(zhuǎn)帳業(yè)務也應取消,兩個帳戶中的余額應恢復到原來的數(shù)據(jù),從而確保轉(zhuǎn)帳前和轉(zhuǎn)帳后的余額不變,即都是1001元。9事務的特性事務必須具備以下四個屬性,簡稱ACID 屬性:q 原子性(Atomicity):事務是一個完整的操作。事務的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行q 一致性(Consistency):當事務完成時,數(shù)據(jù)
6、必須處于一致狀態(tài)q 隔離性(Isolation):對數(shù)據(jù)進行修改的所有并發(fā)事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴于或影響其他事務q 永久性(Durability):事務完成后,它對數(shù)據(jù)庫的修改被永久保持,事務日志能夠保持事務的永久性10如何創(chuàng)建事務q T-SQL使用下列語句來管理事務:q開始事務:BEGIN TRANSACTIONq提交事務:COMMIT TRANSACTIONq回滾(撤銷)事務:ROLLBACK TRANSACTION一旦事務提交或回滾,則事務結(jié)束。q 判斷某條語句執(zhí)行是否出錯:q使用全局變量ERROR;qERROR只能判斷當前一條T-SQL語句執(zhí)行是
7、否有錯,為了判斷事務中所有T-SQL語句是否有錯,我們需要對錯誤進行累計; 如: SET errorSum=errorSum+error11如何創(chuàng)建事務了解事務的分類:q 顯示事務:用BEGIN TRANSACTION明確指定事務的開始,這是最常用的事務類型q 隱性事務:通過設(shè)置SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務模式設(shè)置為打開,下一個語句自動啟動一個新事務。當該事務完成時,再下一個 T-SQL 語句又將啟動一個新事務q 自動提交事務:這是 SQL Server 的默認模式,它將每條單獨的 T-SQL 語句視為一個事務,如果成功執(zhí)行,則自動提交;如果錯誤,
8、則自動回滾12關(guān)鍵語句講解BEGIN TRANSACTION /*-定義變量,用于累計事務執(zhí)行過程中的錯誤-*/DECLARE errorSum INT SET errorSum=0 -初始化為0,即無錯誤/*-轉(zhuǎn)帳:張三的帳戶少1000元,李四的帳戶多1000元*/UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=張三SET errorSum=errorSum+errorUPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四SET errorSum=errorSum+error -累計是否有錯誤如何創(chuàng)建事務q使用事務解決銀行轉(zhuǎn)帳問題開始事務(指定事務從此處開始,后續(xù)的T-SQL語句都是一個整體)累計是否有錯誤13IF errorSum0 -如果有錯誤 BEGIN print 交易失敗,回滾事務 ROLLBACK TRANSACTION END ELSE BEGIN print 交易成功,提交事務,寫入硬盤,永久的保存 COMMIT TRANSACTION ENDGOprint 查看轉(zhuǎn)帳事務后的余額SELECT * FROM bank GO 如何創(chuàng)建
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年壓瘡護理新進展
- 客戶開發(fā)工作總結(jié)案例
- 電梯安全培訓
- 兒童財商教育課件
- 內(nèi)科護理10分鐘小講課
- 倉儲物流中心廠房出租與倉儲服務外包協(xié)議
- 心梗老人的護理
- 知識產(chǎn)權(quán)采購合同范本:電子元器件行業(yè)
- 創(chuàng)新型企業(yè)廠房物業(yè)管理及創(chuàng)新解決方案合同范本
- 物業(yè)服務企業(yè)人力資源配置合同
- 哮喘的治療與護理講課件
- 部編版語文五年級下冊全冊復習知識匯-總
- 2025年河北地礦中地建設(shè)有限公司招聘筆試參考題庫含答案解析
- 常見護理工作應急預案及流程
- 2025年聊城市茌平區(qū)高鐵建設(shè)發(fā)展有限公司招聘筆試參考題庫含答案解析
- 湖南省長沙市寧鄉(xiāng)市2024-2025學年三年級下學期6月期末科學試卷(含答案)
- 2025五年級道德與法治下冊期末綜合測試卷(含答案)
- 2025至2030中國房產(chǎn)證抵押貸款行業(yè)市場深度分析及投資與前景預測報告
- 2025至2030中國LNG運輸行業(yè)市場發(fā)展分析及前景預測與戰(zhàn)略規(guī)劃報告
- GM/T 0021-2023動態(tài)口令密碼應用技術(shù)規(guī)范
- 體育器材采購設(shè)備清單
評論
0/150
提交評論