簡體   English   中英

回滾SQL事務時停止執行

[英]Stop execution when ROLLBACK an SQL transaction

一旦我在T-SQL中回滾事務,是否有辦法停止執行代碼? 例如,在下面的代碼中,我希望打印“消息1”,而不是“消息2”。

BEGIN TRANSACTION
GO
PRINT 'Message 1'
ROLLBACK TRANSACTION
GO
PRINT 'Message 2'
GO

GO語句將批次分開,這意味着即使第一個錯誤發生,下一個批次也將運行。 我假設(並且您知道這意味着什么...)如果您遇到錯誤,則嘗試避開。

您可以查看GOTO ,並具有一個錯誤處理塊。 或者,您可以只獲得RETURN 但是,這必須在同一GO塊中

例:

GO
  return
  SELECT 'Test 1'
GO
  SELECT 'Test 2'
GO

仍會返回測試2,但不會返回測試1。

除了Mike關於GO關鍵字的聲明,您還可以嘗試類似的方法

BEGIN TRY
 Begin Transaction
  print 'Message1'
  Select 1/0 --throws error
 Commit Transaction
 print 'Message2'
END TRY
BEGIN CATCH
 rollback transaction
END CATCH

如果在SP或類似版本中,則可以使用RETURN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM