此更新将失败,因为 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”。
正如马丁所说,这是一个编译错误。
创建了一个不会成为编译错误的约束。
并得到@@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'
;