ID が ID であるため、この更新は失敗します
しかし、直接エラーメッセージが表示されます。
PRINT ステートメントを取得していません。
@@ERROR の使用方法
SSMS の使用。
これをスクリプトと呼びますか、それともクエリと呼びますか?
PRINT 'start';
DECLARE @ErrorVal INT;
UPDATE IndenText SET ID = 7;
SELECT @ErrorVal = @@ERROR;
PRINT @ErrorVal;
IF @ErrorVal <> 0
BEGIN
PRINT N'A error caught.';
END
PRINT 'done';
これも私からはうまくいきません
PRINT 'start';
DECLARE @ErrorVal INT;
BEGIN TRY
UPDATE IndenText SET ID = 7;
SELECT @ErrorVal = @@ERROR;
PRINT @ErrorVal;
END TRY
BEGIN CATCH
IF @@ERROR <> 0
BEGIN
PRINT N'A error caught.' + @@ERROR;
END
END CATCH
PRINT 'done';
メッセージ 8102、レベル 16、状態 1、行 4が
表示されます ID 列 'ID' を更新できません。
マーティンが述べたように、それはコンパイルエラーでした。
コンパイル エラーにならない制約を作成しました。
そして、処理する @@ERROR を取得しました。
PRINT 'start';
DECLARE @ErrorVal INT;
DECLARE @newVal INT;
select @newVal = -1;
BEGIN TRY
update Twaste1 set ID = @newVal ;
PRINT 'End Try';
END TRY
BEGIN CATCH
Select @ErrorVal = @@ERROR;
PRINT 'Begin Catch';
IF @ErrorVal <> 0
BEGIN
PRINT CAST(@ErrorVal as varchar(30));
PRINT N'A error caught.';
END
END CATCH
PRINT 'done'
;