MSSQL 包交易概念範例

MSSQL

    

--建立站存DB
Create Table #testDb
(	id int,
	name nvarchar(50)
)
--輸入一筆資料
INSERT INTO #testDb (id ,name) VALUES (1 ,N'TreeName01')

SELECT * FROM #testDb --查看現在狀態:共1筆資料

--交易開始--
BEGIN TRY
    BEGIN TRAN
    --程式碼異常不會執行--開始--

        INSERT INTO #testDb (id ,name) VALUES (2 ,N'TreeName02')
	SELECT * FROM #testDb --查看現在狀態:成功寫入一筆資料:共2筆資料

        INSERT INTO #testDb (id ,name) VALUES ('A' ,N'TreeName0A')--錯誤寫入失敗
	SELECT * FROM #testDb --查看現在狀態:前面錯誤此行不會執行

    --程式碼異常不會執行--結束--
    COMMIT TRAN
END TRY
--交易結束--

--交易異常執行開始--
BEGIN CATCH
    ROLLBACK TRAN	--恢復
    SELECT ERROR_NUMBER() AS ErrorNumber    --回傳錯誤資訊
END CATCH
--交易異常執行結束--

SELECT * FROM #testDb	--查看現在狀態:還原交易:共1筆資料

--清除暫存
IF OBJECT_ID('tempdb..[#testDb]') IS NOT NULL 
DROP TABLE #testDb

 

我只是一棵樹