尝试执行SQL Merge语句,但它出错

时间:2013-07-15 08:36:56

标签: sql merge sql-server-2012 composite-key

我有一个接受批量产品信息的存储过程。对于每个产品,请将其插入数据库或更新它(如果已存在)。

产品由复合键定义 - > ProductCompanyId(产品来自哪里)和ProductId(每家公司的唯一ID)。

我正在尝试进行MERGE查询。它完美地运行,直到批处理中不止一次具有相同的复合键。

例如,假设我有10个产品。其中2个具有相同的组合密钥但价格不同。

我认为会插入第一行'row',第二行是更新。

这里is some FULL REPO sql code向您展示我的成就。

尝试确保每批只有唯一的复合键非常困难。那么,我能做些什么吗?

我正在使用SQL Server 2012 ..所以我不确定这是不是一个问题。

1 个答案:

答案 0 :(得分:2)

不是直接使用@MergeData作为MERGE语句的源,而是可以(应该)重写它以使用子查询或CTE来过滤重复行并选择要在{{1}中使用的正确行}

MERGE