關於COMMIT和ROLLBACK語句的使用注意事項
作者:莫懷遠
1. COMMIT WORK 語句執行許多與任務的同步執行有關的功能。
ROLLBACK WORK語句“取消”任務同步執行的所有請求。
COMMIT WORK 語句進行下列處理:
• 執行所有由PERFORM ON COMMIT 請求的FORM 例程。
按優先順序的升序執行這些例程,順序由 PERFORM 語句的LEVEL 引數指定。
• 如果請求,觸發所有更新任務功能模組。
• 如果請求,觸發所有後臺任務功能模組。
• 觸發資料庫提交(依次釋放資料庫鎖定)。
• 清空反轉日誌。
反轉日誌包含應用更改前的表格快照。執行反轉時,該快照用來將表格復位到原值。
• 關閉所有開啟的資料庫游標。
• 將所有TEMSE 物件寫入永久性檔案或資料庫。
TEMSE檔案是由於效能原因在執行事務期間快取的臨時序列檔案。TEMSE檔案的示例有假離線物件或作業日誌。
• 將時間片計數器(用於訪問工作程式)復位到0。
系統中的時間片計數器限制工作程式中程式執行的時間量。如果程式常常超過時間片限制,則可以使用COMMIT WORK為程式獲得更多時間。
但是,要達此目的,必須很容易將處理分為更小單元(全部或沒有操作)。然後可以在每個單元之後插入COMMIT WORK 語句。當然處理單元邏輯上必須獨立,因為在發生錯誤時,不能取消前面的單元中所提交的更新。
ROLLBACK WORK“拋棄”當前事務的所有更新:
• 拋棄所有以前用PERFORM ON COMMIT 登入的FORM例程
• 在更新任務佇列中將所有以前請求的更新任務功能標記為錯誤
• 拋棄所有以前請求的後臺任務功能
• 從緩衝儲存中刪除所有TEMSE物件(臨時 連續檔案,如假離線物件和作業日誌)
• 觸發資料庫反轉操作(依次釋放所有資料庫鎖定)
• 關閉所有開啟的資料庫游標
2. 以下情況需使用使用COMMIT和ROLLBACK語句。
1) 透過INSERT、UPDATE和MODIFY語句對資料庫進行更新事務後。
2) 執行BAPI處理後。一般使用BAPI函式BAPI_TRANSACTION_COMMIT(內含COMMIT語句) 。
3. 如果要保證資料庫中當前所作的更改立即被確認,那麼就必須使用COMMIT WORK 語句結束LUW。COMMIT WORK 在程式程式碼中標記了 LUW(幾個作業聯絡在一起形成作業的邏輯單元) 結束並啟動更新任務。在COMMIT WORK 語句以後,對資料庫所作的所有更改都不能再取消。但是,如果在LUW 中出現了錯誤,就必須取消已經執行的部分。這意味著當前沒有任何插入的行能 永久地儲存在資料庫中。要撤銷當前LUW 對資料庫的更改,請使用ROLLBACK WORK,它將取消前一次資料庫提交後的所有更改。
4. COMMIT WORK [AND WAIT(同步)].
如果使用AND WAIT選項,那麼在程式繼續執行以前,它要等到更新任務的結束。如果更新是成功的,SY-SUBRC 就設定為0。如果 SY-SUBRC 返回一個非零值,就沒有成功的儲存所作的更改。
ROLLBACK WORK.
如果對更改的取消是成功的,SY-SUBRC 就設定為0。如果 SY-SUBRC 返回一個非零值,就沒有成功地取消所作的更改
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90072/viewspace-967021/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 語句的注意事項SQL
- MySQL常用語句及注意事項MySql
- 關於Golang struct{}{}用法和注意事項GolangStruct
- 關於MongoDB的幾點注意事項UMMongoDB
- Oracle vs PostgreSQL,研發注意事項(13) - UPDATE語句OracleSQL
- 關於mysqldump備份非事務表的注意事項MySql
- Oracle vs PostgreSQL,研發注意事項(2)-DDL語句與事務OracleSQL
- jQuery 語法總結和注意事項jQuery
- 需要提醒你關於 golang 中 map 使用的幾點注意事項Golang
- imp使用注意點(commit選項)MIT
- Oracle使用*的注意事項Oracle
- 關於android:layout_weight屬性使用注意事項Android
- Android Handler的使用方式和注意事項Android
- C 語言位域使用及其注意事項
- 使用 聚合函式(aggregate function)時,SQL語句的返回值的注意事項函式FunctionSQL
- 使用parallel注意事項Parallel
- 關於vSphere 5.5硬體版本注意事項
- 語音識別中使用Cool Edit Pro的使用注意事項
- Go語言中 defer 使用場景及注意事項,你是要注意的!Go
- 使用Google Fonts注意事項Go
- Go 切片使用注意事項Go
- 使用CocosBuilder注意事項UI
- removeChild使用時注意事項REM
- 關於GPIO合封引腳以及晶振引腳使用注意事項
- fork 和 vfork 使用的注意事項和 system() 函式的替代函式
- RPA專案中關於資訊配置表的注意事項
- 使用Vue.js的注意事項Vue.js
- 使用HTTP的三個注意事項HTTP
- 快取使用中的注意事項快取
- 使用MyBatis的注意事項有哪些MyBatis
- 儲存過程基本語法和須注意事項儲存過程
- SQVI和SAP查詢QUERY的區別和使用注意事項
- 使用ProForm的useRef()物件的注意事項ORM物件
- 關於資料倉儲區文件連結推薦和提問的注意事項!
- 直流負載箱的安全事項和注意事項有哪些?負載
- TCP使用注意事項總結TCP
- C中memcpy使用注意事項memcpy
- 萬兆網路卡使用注意事項