我使用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?