我有一些不同的项目应该被复制到不同的组织。我用merge语句完成了这个。当项目不存在时我工作正常,但下次应该更新它时会在每个组织中创建新项目。
merge items as target
using
(
select items.name, items.value, items.org
from Items
) as source
on (target.items.name = source.items.name and
target.items.value = '50')
when matched then
update set target.items.name = source.items.name
when not matched by target then
Insert(...)
Values(...);
我想它有一些东西,下次这个条件不符合条件而且新项目会产生,但我不明白为什么......
也许只做简单的插入更好吗?
答案 0 :(得分:0)
来自一个组织的项目应更新另一个组织中的项目。
merge语句不支持更新“其他行”。从概念上讲,它是逐行操作的。源和目标已连接(完全外部联接),并且对于每个联接结果,您可以决定发生的一个操作。对于更新和删除操作发生在连接的目标表行。
您需要使用多个语句。