CATCH
当块中遇到错误时,我想回滚块中的所有语句TRY
:
BEGIN TRY
begin transaction
create table t3(a int )
insert into t3 values(1)
insert into t3 values(1,2) --error occur
insert into t3 values(3)
END TRY
BEGIN CATCH
--just take care of rollback
IF @@TRANCOUNT <> 0
BEGIN
PRINT 'in catch,ROLLING BACK';
ROLLBACK
END
END CATCH
go
起初,由于CATCH
块中的 PRINT 工作,错误被捕获。但是,经过多次来回更改,错误似乎不再被捕获,CATCH
因为不再发生打印。
因此,我打开一个新查询并执行相同的操作。这次错误可以再次被捕获!!
对不起大图