解读SQLServer2008的新语句MERGE

解读SQLServer2008的新语句MERGE,第1张

解读SQLServer2008的新语句MERGE,第2张

SQL Server 2008将包含合并两个行集数据的新语法。根据从一个源数据表到另一个源数据表的确定性插入、更新和删除的复杂操作,开发人员可以通过使用新的MERGE语句用一个命令来完成。

在两个表之间同步信息时,有三个步骤。首先处理需要插入到目标数据表中的任何新行。第二个是处理需要更新的现有行。最后,删除不再使用的旧行。在这个过程中,需要维护大量重复的逻辑,这可能会导致细微的错误。

Bob Beauchemin讨论了MERGE语句,它将上述多个操作步骤合并成一个语句。他举了以下例子:
merge [target] t
使用[source] s on t.id = s.id
匹配时然后更新t.name = s.name,t.age = s.age -使用" rowset 1 "
不匹配时然后插入值(id,name,age) -使用" rowset 2 "
当source不匹配时然后删除;-使用“行集3”


如你所见,具体操作是根据下面join的分析结果来决定的。在本例中,如果目标数据表和源数据表具有匹配的行,将执行更新操作。如果没有,插入或删除以保持目标数据表与源数据表一致。

这种新语法的优点之一是它在处理更新时的确定性。使用标准更新语法和union时,可能有多个源行与目标行匹配。在这种情况下,不可能预测更新操作将使用哪个源数据行。

当使用MERGE语法时,如果有多个匹配项,它将抛出一个错误。这提醒开发者,目前的联合条件还不够明确,无法达到预期的目标。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 解读SQLServer2008的新语句MERGE

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情