此文章主要向大家講述的是DB2 9.7自治事務的定義與對其在實際操作中的一些事務背景的描述,我們大家都知道了解 IBM DB2® Version 9.7 for Linux®, UNIX®, and Windows® 中引入的自治事務特性。您將獲得有關自治事務的定義和創建方式的概述和示例。
簡介
本文將介紹 DB2 9.7自治事務特性。自治事務與數據庫管理員和應用程序開發人員都有密切的關系。
本文將討論 DB2 9.7 for Linux, UNIX, and Windows。掌握 DB2 命令行處理器CLP)和 SQL PL 的知識將非常有幫助。
要運行本文中的示例,需要訪問 DB2 9.7 for Linux, UNIX, and Windows 數據庫。從 參考資料 部分查找下載 DB2 試用版的鏈接。
了解一些事務背景
事務是以文本、列或同時使用兩者)的形式表現的來自真實世界的實體,將由數據庫管理系統處理。它們可以作為針對數據庫執行的操作,並且必須作為一組操作執行。
例如,從用戶 A 的帳戶將 X 金額傳輸到用戶 B 的帳戶,這個請求是一個非常簡單的事務。這個事務可以被分解為兩個 SQL 語句,如清單 1 所示:
清單 1. 簡單事務的示例
- Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance - X, where UserName=A
- Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance + X, where UserName=B
只有在兩條 SQL 語句都能夠成功更新表的情況下,事務才會得到成功調用。為了確保兩條語句都能夠生效或都不生效,應用程序將以這樣的方式運行:直到 COMMIT 發生之前,數據庫不會做出任何更改。發生 COMMIT 時,所有未提交的語句自最近一次 COMMIT 之後的所有語句)將同時生效,確保數據的完整性。這類似於禁用命令行處理器CLP)的 AUTO COMMIT 行為,然後發出一組語句並手動完成 COMMIT 操作。ROLLBACK 將移除所有未提交的修改。因此 COMMIT 和 ROLLBACK 語句是事務實現的重要構建塊。
自治事務簡介
DB2 9.7自治事務擁有自己的 COMMIT 和 ROLLBACK 范圍,確保它的結果不會影響到調用方的未提交的變更。此外,調用會話中的 COMMITs 和 ROLLBACKs 不應當影響自治事務本身完成時發生的最後更改。
注意,調用會話將被暫停,直到被調用的會話返回控制權。自治事務的支持不應該視為支持並行執行會話。
創建自治事務
在 DB2 中,自治事務通過自治過程實現。存儲過程為將語句綁定到塊中提供了一種自然的方式。要創建自治過程,需要在 CREATE PROCEDURE 語句中指定關鍵字 AUTONOMOUS,如清單 12 所示。
清單 2. CREATE PROCEDURE 語句示例
- CREATE OR REPLACE your_procedure_name
- LANGUAGE SQL
- AUTONOMOUS
- BEGIN
- do autonomous work ;
- END
在調用自治過程時,將在獨立的會話中執行,以提供必需的事務獨立性。成功的自治過程將使用隱式方式提交,而失敗的自治過程將執行回滾。無論哪一種情況,都不會影響調用事務。