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
ただし、いくつかの変更を行ったり来たりした後、印刷が行われなくなったため、エラーは発生しなくなったようです。
したがって、新しいクエリを開いて同じことを実行します。今回もエラーがキャッチできます!!
大きな画像でごめんなさい