我可以使用SQL Server 2005中的MERGE语句?(Can I use the MERGE

2019-06-18 08:10发布

我使用SQL Server 2005和我想在SQL Server 2005中是否有可能单个查询创建MERGE语句或概念?

Answer 1:

MERGE是在SQL Server 2008中引入了如果你想使用的语法,你需要升级。

否则,典型的方法将取决于其中源数据是从。 如果它只是一个行,你不知道你是否需要更新或插入,你可能会做的事:

UPDATE ... WHERE key = @key;

IF @@ROWCOUNT = 0
BEGIN
    INSERT ...
END

如果源是一个#temp表,表变量,TVP或其他表,你可以这样做:

UPDATE dest SET ...
  FROM dbo.destination AS dest
  INNER JOIN dbo.source AS src
  ON dest.key = src.key;

INSERT dbo.destination SELECT ... FROM dbo.source AS src
  WHERE NOT EXISTS (SELECT 1 FROM dbo.destination WHERE key = src.key);

MERGE (和迈克尔·斯沃特证明这里 ),你仍然要围绕上述任何一种方法适当交易,错误处理和隔离级别表现得像一个真正的,单人操作。 即使是单一的MERGE语句不会保护你免受并发。

我已经发表了一些有关合并其他注意事项,在这里详细 。



文章来源: Can I use the MERGE statement in SQL Server 2005?