我正在寻找一个解决方案,在SQL Server 2005中的重复键更新操作上执行Insert。此操作可能会插入或更新大量条目。 SQL Server 2008有一个简洁的操作MERGE,可以完美地完成,问题是我们遇到了SQL Server 2005
我已经研究过标准解决方案,但所有这些解决方案并不好,因为他们认为只有一个条目被更新/插入。
有没有人知道在旧版本的SQL Server中复制MERGE行为的方法?
答案 0 :(得分:6)
Alex Kuznetsov's blog包含使用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)