资料库入门程式.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料库入门程式

第六篇 ? 交易管理(Transaction Management) 交易管理(Transaction Management) 是指管理一連串多個連續操作(Operations) 以完成一項邏輯工作(Logical Unit of Work) 之處理。例如銀行轉帳(Transfer of Money),從一個銀行帳戶(Account) 轉帳至另一帳戶,在邏輯上是一項工作;在操作上是一串多個連續操作之組合執行。 ? 本篇將詳細討論交易處理之概念(Concepts)、多個執行緒之並行管理(Concurrency Control)、與資料之重整更新(Problem Recovery)。 第二十章 ? 交易處理(Transaction) 20-1 簡介 當多個行程(Processes) 同時執行時,行程之間可相互影響、可分享記憶體(Memory)、可分享資料(Data),此時往往因管理不周嚴,使得資料失去一致性(Inconsistency)。 ? 因此、在多個行程同步並行時,如何保持資料的緊密性(Atomicity)、一致性(Consistency)、區隔性(Isolation)、持久性(Durability),是交易處理的一個重要環節,本章將深入探討之。 20-2交易處理概念(Transaction Concept) 交易處理(Transaction) 是執行一串多個連續操作(Operations)、進而完成一個單元邏輯工作(Logical Unit of Work)。在未討論資料庫交易處理之前,我們可以一般高階語言程式為例,於C:begin … end為一工作單元,其間之程式碼為一個交易處理;於Java:{…} 為一工作單元,其間之程式碼為一個交易處理。 ? 為確保資料的整體性(Integrity),資料庫系統應考量其交易處理要具有:緊密性(Atomicity)、區隔性(Isolation)、一致性(Consistency)、與持久性(Durability)。 20-3 交易處理狀態(Transaction State) 圖20-3 交易處理之過程可由數個狀態節點(States) 表示之,我們以各狀態之進度作設計判斷,狀態之間以箭頭連線為關鍵次序關係(如圖20-3): 20-5 Java/Access交易處理指令 為了執行交易處理,Java/Access指供方法程序setAutoCommit()、commit() 輔助執行。 ? 當設定setAutoCommit(false) 時,系統將關閉自動執行模式,程式碼有執行描述,但無實際執行動作;當逢commit()時,將描述的所有程式碼一併快速執行。因此、setAutoCommit(false) 可視為Begin Transaction,commit() 可視為Commit Transaction,交易行程(Transaction Processes) 居於兩者之間。 範例176:建立資料庫Bank176.accdb、於資料表Borrow以交易法則,新增一筆資料(即在執行時,不允許有其他因素之干擾)。 (12) 設計關鍵程式碼: con.setAutoCommit(false); (Begin Transaction) INSERT INTO Borrow VALUES (新增一筆資料) (ABCD, 1111, XYZ, 2000) mit(); (Commit Transaction) ? 其中BEGIN TRANSACTION 以指令con.setAutoCommit(false) 執行;COMMIT TRANSACTION 以指令mit() 執行,con為資料庫連接物件。 ? (2) 設計程式Transaction_176.java(如本書CD檔案)。 範例177:建立資料庫Bank177.accdb,使用資料表Deposit,從Johnson之帳戶212轉帳600元至Hayes之帳戶213,以交易法則執行。 (2) 設計關鍵程式碼: con.setAutoCommit(false); (Begin Transaction) UPDATE Deposit (從Johnson帳戶212轉出600元) SET balance = balance - 600 WHERE account_n

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档