我正在尝试执行下面的查询,并且在此期间生成一个约束违例异常并且由于该insert语句被终止。
我想从10条记录中假设9条记录是干净的,然后插入将完成9.right现在语句终止并且不执行插入。
我正在使用SQL Server 2012,我不想回滚事务,并且在SQL服务器中没有插入忽略命令,我不想插入包含error.i的数据,只想插入干净的数据。
查询:
INSERT INTO rcmschargepostingmastertable
(clinicid,
clinicsiteid,
appointmentid,
patientid
)
SELECT clinicid,
clinicsiteid,
appointmentid,
patientid,
FROM #tempautopostbulkchargepostingmastertable
答案 0 :(得分:2)
您无法按照评论中的说明进行操作:
我想忽略任何sql错误,并希望继续插入 清理记录
SQL Server没有任何纯SQL机制来执行此操作。您唯一的选择是使用建议的解决方法之一(SSIS,WHERE子句)。
没有提及一个解决方案,因为它是性能最差的,但至少它是你没有被击落的,是取代你的带有光标的基于集合的插入,一次插入一行。
然后你可以将单行插入放在一个TRY块中,如果它出错,光标将跳过它并继续下一个插入。
答案 1 :(得分:1)
我不想插入包含error.i的数据,只想插入干净的数据。
然后,您需要在插入目标表之前识别并过滤掉违反记录的错误数据/约束,这将使您的生活更轻松。
........
modifiedbyid
FROM #tempautopostbulkchargepostingmastertable
Where some_column <> 'bad data'
由于您使用的是SQL Server 2012,因此您可以使用TRY_CONVERT
来识别和过滤掉错误的数据