我正在寻找一种对重复键Update(例如SQL Server 2005中的操作)执行插入的解决方案。此操作可能会插入或更新大量条目。SQL Server 2008有一个整洁的操作MERGE,可以很好地完成它,问题是我们只能使用SQL Server2005。 我研究了标准的解决方案,但是它们都不是很好,因为它们假定只有一个入口已更新/插入。 有谁知道在旧版SQL Server中复制MERGE行为的方法?
Alex Kuznetsov的博客包含使用语句OUTPUT子句的建议UPDATE。为了解释该博客条目中的示例(未试用):
OUTPUT
UPDATE
DECLARE @updated_ids table(id int) UPDATE table SET ... OUTPUT inserted.id INTO @updated_ids FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id INSERT INTO table SELECT ... FROM data-to-insert WHERE id NOT IN (SELECT id FROM @updated_ids)