我需要将十几个新行插入到不是来自另一个表的表中。我还需要根据几个没有使用任何约束的列来检查是否存在重复项。
目前我的解决方案是首先将这些行插入临时表,然后使用INSERT INTO [...] SELECT和使用NOT EXISTS的WHERE子句。
似乎必须有更好的方法来做到这一点,我正在寻找建议。
(使用SQL Server 2012)
就像上下文一样,用例就是数据库迁移过程,其中行需要插入,迁移可能会多次运行,无法插入重复数据,也无法抛出唯一的约束违规,因为它会结束执行迁移。
答案 0 :(得分:3)
我建议使用TSQL Merge。 IT可以处理查找重复项,只有在它是新记录时才会插入。 (何时不匹配)条款
答案 1 :(得分:1)
使用SQL Server的BULK INSERT
时,重复项将无提示失败。