回滾事務。
ROLLBACK [WORK]ROLLBACK TO SAVEPOINT pointname
pointname
- 作為標識符指定的現有保存點的名稱。ROLLBACK
語句將回滾事務,撤消已執行但未提交的工作,減少$TLEVEL事務級別計數器,并釋放鎖。 ROLLBACK
用于將數據庫恢復到以前的一致狀態。
ROLLBACK
回滾當前事務期間完成的所有工作,將$TLEVEL
事務級別計數器重置為0
,并釋放所有鎖。 這會將數據庫恢復到事務開始之前的狀態。 ROLLBACK
和ROLLBACK WORK
是等價的語句; 這兩個版本都支持兼容性。ROLLBACK TO SAVEPOINT pointname
將回滾自指定保存點以來已完成的所有工作,并按未完成的保存點的數量遞減$TLEVEL
事務級別計數器。 當所有保存點都被回滾或提交,并且事務級別計數器重置為零時,事務就完成了。 如果指定的保存點不存在,或者已經回滾,ROLLBACK
將發出SQLCODE -375
錯誤并回滾整個當前事務。回滾到SAVEPOINT
必須指定一個點名。 如果不這樣做,將導致SQLCODE -301
錯誤。
如果事務操作未能成功完成,則會發出SQLCODE -400
錯誤。
ROLLBACK
操作不影響以下項目:
IDKey
計數器。 IDKey
是由$INCREMENT
(或$SEQUENCE
)自動生成的,它維護一個獨立于SQL
事務的計數。DDL
操作或調優表操作可以創建并運行臨時例程。 這個臨時例程與緩存查詢一樣被處理。 也就是說,臨時例程的創建、編譯和刪除不被視為事務的一部分。 臨時例程的執行被認為是事務的一部分。提示回滾發生的消息和回滾操作中遇到的錯誤都記錄在MGR
目錄下的Messages.log
文件中。 您可以通過“管理門戶系統操作”、“系統日志”、“消息日志”選項查看“Messages.Log
”。
%SYSTEM.Process
類的TransactionsSuspending()
方法可用于掛起和恢復系統范圍內的所有當前事務。掛起事務會掛起更改的日志記錄。因此,如果在當前事務期間發生事務掛起,則ROLLBACK
不能回滾在事務掛起期間所做的任何更改;但是,回滾將回滾在事務掛起生效之前或之后在當前事務期間所做的任何更改。
ObjectScript
和SQL TRANSACTION
命令完全兼容且可互換,但以下情況除外:
如果沒有當前事務,ObjectScript TSTART
和SQL START TRANSACTION
都會啟動事務。但是,START TRANSACTION
不支持嵌套事務。因此,如果需要(或可能需要)嵌套事務,最好使用TSTART
啟動事務。如果需要與SQL標準兼容,請使用START TRANSACTION
。
ObjectScript
事務處理為嵌套事務提供有限的支持。SQL事務處理為事務內的保存點提供支持。
ClassMethod ROLLBACK(){ &sql(SET TRANSACTION %COMMITMODE EXPLICIT) w !,"Set transaction mode, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(START TRANSACTION) w !,"Start transaction, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(SAVEPOINT a) w !,"Set Savepoint a, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(SAVEPOINT b) w !,"Set Savepoint b, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(SAVEPOINT c) w !,"Set Savepoint c, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(ROLLBACK) w !,"Rollback transaction, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL}
DHC-APP>d ##class(PHA.TEST.SQLCommand).ROLLBACK() Set transaction mode, SQLCODE=0Transaction level=0Start transaction, SQLCODE=0Transaction level=1Set Savepoint a, SQLCODE=0Transaction level=2Set Savepoint b, SQLCODE=0Transaction level=3Set Savepoint c, SQLCODE=0Transaction level=4Rollback transaction, SQLCODE=0Transaction level=0
以下嵌入式SQL示例演示了回滾到保存點名稱如何將事務級別($TLEVEL
)恢復到緊靠指定保存點之前的級別:
ClassMethod ROLLBACK1(){ &sql(SET TRANSACTION %COMMITMODE EXPLICIT) w !,"Set transaction mode, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(START TRANSACTION) w !,"Start transaction, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL &sql(SAVEPOINT a) w !,"Set Savepoint a, SQLCODE=",SQLCODE w !,"Transaction level at a=",$TLEVEL &sql(SAVEPOINT b) w !,"Set Savepoint b, SQLCODE=",SQLCODE w !,"Transaction level at b=",$TLEVEL &sql(ROLLBACK TO SAVEPOINT b) w !,"Rollback to b, SQLCODE=",SQLCODE w !,"Rollback transaction level=",$TLEVEL &sql(SAVEPOINT c) w !,"Set Savepoint c, SQLCODE=",SQLCODE w !,"Transaction level at c=",$TLEVEL &sql(SAVEPOINT d) w !,"Set Savepoint d, SQLCODE=",SQLCODE w !,"Transaction level at d=",$TLEVEL &sql(COMMIT) w !,"Commit transaction, SQLCODE=",SQLCODE w !,"Transaction level=",$TLEVEL}
DHC-APP>d ##class(PHA.TEST.SQLCommand).ROLLBACK1() Set transaction mode, SQLCODE=0Transaction level=0Start transaction, SQLCODE=0Transaction level=1Set Savepoint a, SQLCODE=0Transaction level at a=2Set Savepoint b, SQLCODE=0Transaction level at b=3Rollback to b, SQLCODE=0Rollback transaction level=2Set Savepoint c, SQLCODE=0Transaction level at c=3Set Savepoint d, SQLCODE=0Transaction level at d=4Commit transaction, SQLCODE=0Transaction level=0
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
錯誤代碼118什么意思?錯誤代碼118是一個擴展鏈接錯誤,其中大部分是web服務器上的鏈接錯誤。解決方案:使用命令提示符重置網絡設置和DNS緩存。網站是指使用HTML(標準通用標記語言)等工具,按照一定規則在互聯網上顯示特定內容的網頁集合??傊?,網站是一種交流工具,人們可以通過它發布自己想公開的信息,或者利用網站提供相關的網絡服務。人們可以通過網絡瀏覽器訪問網站,獲取所需信息或享受網絡服務。網站是...
360怎么取消廣告攔截?1.首先可以打開360瀏覽器,點擊瀏覽器菜單欄中的工具,在下拉的菜單中點擊選項。2、打開設置頁面后,在左側的選項中再點廣告過濾,切換到廣告過濾設置里頁面。3、將傳送封鎖前面的方框打上勾,然后點擊看看方框就也可以打上勾,瀏覽器會不自動需要保存設置里。再瀏覽網頁時,廣告彈窗就不會再彈出了。360瀏覽器彈出廣告窗口怎么消除?可以不再打開360瀏覽器,找到其中的一個工具欄,工具欄往...
ps4剛發布的時候賣多少錢?你好,。500克的給國行2200,1噸的給國行2600(除了一些限量發售,好像還沒有 尚未正式發布)。非國行的價格相對更隨意,但一般都比國行便宜。ps4多少錢?美版PS4售價399美元,約合2430元。上映日期是2013年11月15日。PS4的售價為3380港幣,約合2657元。上映日期是2013年12月17日。港版PS4《地帶:陰影墜落》中英文售價為3780港幣,約合...