繁体   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