如何跳过违反外键约束的数据并在SQL Server中插入其余数据?如何处理SQL Server中的特定错误?

dly7yett  于 2022-10-22  发布在  SQL Server
关注(0)|答案(1)|浏览(275)

我正在使用spring引导程序将一些数据加载到MSSQL服务器中的子表。我从一个服务中获取数据,并为每个项循环插入语句。某些损坏的数据违反了外键约束。我想跳过违反FK约束的数据并继续插入剩余数据。
我正在使用下面的插入查询来执行相同的操作
begin try INSERT INTO [dbo].[TABLENAME](.....column names......)VALUES(.....) end try begin catch end catch

try-catch正在处理抛出的FK约束异常,并允许程序继续执行循环中的其他记录而不会出现任何问题,但它也不会因任何其他约束违规而抛出错误。是否有方法在try-catch中特别提到错误类型,以便它只处理FK约束。

我能够在Oracle中使用exception when dup_val_on_index then在其他程序中执行类似的约束特定捕获。非常感谢任何帮助!

eqqqjvef

eqqqjvef1#

可以在begin catch end catch块中使用@@ERRORERROR_NUMBER()ERROR_MESSAGE()
示例:-

Begin try
    INSERT INTO [dbo].[TABLENAME](.....column names......)VALUES(.....)
End try
Begin catch
    IF ERROR_NUMBER() != 547
    -- IF @@ERROR != 547
    -- IF ERROR_MESSAGE() Not like '%The INSERT statement conflicted with the FOREIGN KEY constraint%'
Throw
End catch

相关问题