如果没有重复,则插入新行

时间:2014-08-04 18:20:47

标签: sql sql-server

我需要将十几个新行插入到不是来自另一个表的表中。我还需要根据几个没有使用任何约束的列来检查是否存在重复项。

目前我的解决方案是首先将这些行插入临时表,然后使用INSERT INTO [...] SELECT和使用NOT EXISTS的WHERE子句。

似乎必须有更好的方法来做到这一点,我正在寻找建议。

(使用SQL Server 2012)

就像上下文一样,用例就是数据库迁移过程,其中行需要插入,迁移可能会多次运行,无法插入重复数据,也无法抛出唯一的约束违规,因为它会结束执行迁移。

2 个答案:

答案 0 :(得分:3)

我建议使用TSQL Merge。 IT可以处理查找重复项,只有在它是新记录时才会插入。 (何时不匹配)条款

请参阅Merge Transact-SQL

答案 1 :(得分:1)

使用SQL Server的BULK INSERT时,重复项将无提示失败。