SQL Server 2005,批量更新或插入

时间:2010-01-19 09:43:50

标签: sql sql-server-2005

我正在寻找一个解决方案,在SQL Server 2005中的重复键更新操作上执行Insert。此操作可能会插入或更新大量条目。 SQL Server 2008有一个简洁的操作MERGE,可以完美地完成,问题是我们遇到了SQL Server 2005 我已经研究过标准解决方案,但所有这些解决方案并不好,因为他们认为只有一个条目被更新/插入。
有没有人知道在旧版本的SQL Server中复制MERGE行为的方法?

1 个答案:

答案 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)