国产探花免费观看_亚洲丰满少妇自慰呻吟_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') )


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江油市| 宝清县| 望城县| 上思县| 宁强县| 汉源县| 永胜县| 福清市| 五峰| 文成县| 佛山市| 宝兴县| 蒙山县| 抚州市| 江西省| 宿松县| 山西省| 彭水| 盈江县| 郴州市| 颍上县| 武义县| 正镶白旗| 象州县| 崇文区| 临武县| 开江县| 海淀区| 峨边| 云龙县| 靖西县| 民和| 青川县| 民权县| 谷城县| 集安市| 南宫市| 小金县| 盐亭县| 田林县| 孝感市|