国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Rollback 語句 在08R2版本

2024-07-21 02:46:40
字體:
來源:轉載
供稿:網友
Rollback 語句 在08R2版本

有時候為了數據完整我們會啟用到事務。正常的時候一帆風順,如果rollback 呢?

最簡單的一個回滾IF OBJECT_ID('PROC1') IS NOT NULL DROP PROCEDURE dbo.PROC1;GOCREATE PROCEDURE PROC1AS BEGIN BEGIN TRY BEGIN TRAN; SELECT 'Tran1' ,1; RAISERROR(16,1,1); SELECT 'Tran1' ,2; COMMIT TRAN; END TRY BEGIN CATCH SELECT 'Tran1' ,3; ROLLBACK TRAN; SELECT 'Tran1' ,4; RETURN -1; END CATCH; END;GO執行一下,拋出錯誤后繼續向下執行。

當事務有嵌套的時候。在拋出錯誤的事務里面,會繼續執行批處理剩下的語句,最后才回滾上去并往上層拋錯誤。非拋出層和最外層事務,語句運行至rollback就往上層拋。如下IF OBJECT_ID('PROC2') IS NOT NULLDROP PROCEDURE dbo.PROC2goCREATE PROCEDURE PROC2ASBEGINBEGIN TRYBEGIN TRAN SELECT 'Tran2',1 EXEC dbo.PROC1 SELECT 'Tran2',2COMMIT TRANEND TRYBEGIN CATCH SELECT 'Tran2',3 ROLLBACK TRAN SELECT 'Tran2',4 RETURN -2END CATCHENDGOIF OBJECT_ID('PROC3') IS NOT NULLDROP PROCEDURE dbo.PROC3goCREATE PROCEDURE PROC3ASBEGINBEGIN TRYBEGIN TRAN SELECT 'PROC3',1 EXEC dbo.PROC2 SELECT 'PROC3',2COMMIT TRANEND TRYBEGIN CATCH SELECT 'PROC3',3 ROLLBACK TRAN SELECT 'PROC3',4 RETURN -3END CATCHENDGO執行存儲過程SET NOCOUNT ON;DECLARE @INT INTEXEC @INT=dbo.PROC3SELECT @INTrollback在嵌套觸發器中,如果在觸發器的事務里面拋出錯誤,回滾之前觸發器的語句修改,繼續執行rollback之后的語句。但并不會激活之后的觸發器CREATE TABLE TestTR(ID INT PRIMARY KEY,Name NVARCHAR(50))CREATE TABLE TRTB1(ID INT PRIMARY KEY,Col1 INT)CREATE TRIGGER TR_TESTTR1 ON dbo.TestTR AFTERINSERT ASBEGIN TRYBEGIN TRANINSERT INTO dbo.TRTB1 ( ID, Col1 )VALUES ( 1, CONVERT(INT,'a') )COMMIT TRANEND TRYBEGIN CATCHROLLBACK TRANINSERT INTO dbo.TestTR ( ID, Name )VALUES ( 1, CONVERT(INT,'2') )END CATCHGOINSERT INTO TestTR ( ID, Name )VALUES ( 4, CONVERT(INT,'3') )


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴业县| 美姑县| 当阳市| 澄城县| 福州市| 木里| 察雅县| 高台县| 双辽市| 东莞市| 丘北县| 灵台县| 岳池县| 三穗县| 黎平县| 宜春市| 抚宁县| 惠东县| 巩义市| 嘉兴市| 承德县| 邻水| 维西| 通许县| 清远市| 鄂托克前旗| 高雄县| 泰州市| 视频| 盖州市| 上虞市| 卓资县| 文山县| 华亭县| 吉木乃县| 南召县| 平度市| 江陵县| 新民市| 洛浦县| 宜宾市|