如果我exec的这批:当SQL Server中的错误停止执行时?
begin transaction
PRINT 'start'
PRINT 1/0
PRINT 'continue'
drop table dbo.tblPrueba
select * from dbo.tblPrueba
PRINT 'finish'
rollback transaction
的输出中是这样的:
start
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
continue
Msg 208, Level 16, State 1, Line 6
Invalid object name 'dbo.tblPrueba'.
我迫使两个错误: - 第一个:PRINT 1/0(即生成该错误:
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
)并继续执行批处理
- 第二个:
drop table dbo.tblPrueba
select * from dbo.tblPrueba
生成此错误:
Msg 208, Level 16, State 1, Line 6
Invalid object name 'dbo.tblPrueba'.
并停止批
的执行它们之间有什么不同?我在哪里可以学习那些停止执行和那些不会执行的操作?
非常感谢!
@PankajGarg:如果你最终在一个CATCH块中,我会回滚。我也使用SET XACT_ABORT ON,它将会回滚 – gbn 2012-02-21 08:56:19