一個(gè)存儲(chǔ)過(guò)程中多個(gè)更新操作,后面的更新操作出現(xiàn)異常,如果不手動(dòng)回滾前面修改的數(shù)據(jù)是不會(huì)自動(dòng)撤銷(xiāo)的!
BEGIN TRY BEGIN TRAN-- ..... COMMIT TRANEND TRYBEGIN CATCH ROLLBACK TRAN DECLARE @ErrorMessag NVARCHAR(255) SELECT @ErrorMessag = Error_message() RAISERROR (15600,-1,-1,@ErrorMessag);END CATCH
另參考:http://msdn.microsoft.com/zh-cn/library/ms178592.aspx
BEGIN TRY -- RAISERROR with severity 11-19 will cause execution to -- jump to the CATCH block. RAISERROR ('Error raised in TRY block.', -- Message text. 16, -- Severity. 1 -- State. );END TRYBEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(); -- Use RAISERROR inside the CATCH block to return error -- information about the original error that caused -- execution to jump to the CATCH block. RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. );END CATCH;
新聞熱點(diǎn)
疑難解答
圖片精選