解析SQL Server 2008中的新语句:MERGE

灼眼的夏娜161

灼眼的夏娜161

2016-02-19 19:37

想要天天向上,就要懂得享受学习。图老师为大家推荐解析SQL Server 2008中的新语句:MERGE,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

  Microsoft SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者只需使用一条命令就可以完成。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  在对两个表进行信息同步时,有三步操作必须要进行。首先我们要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并可能导致微妙的错误。

  值得我们大家主意的是,Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个操作步骤合并成单一语句。以下是他给出的示例:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  以下是引用的片断:

merge [target] t

using [source] s on t.id = s.id

when matched then update t.name = s.name, t.age = s.age -- use "rowset1"

when not matched then insert values(id,name,age) -- use "rowset2"

when source not matched then delete; -- use "rowset3"

  大家可以看到,具体的操作是根据后面的联合(join)的解析结果来确定的。在这个示例中,假如目标和源数据表有匹配的行,就实行更新操作。如果没有,就实行插入或者删除操作来使目标数据表和源数据表保持一致。

  这个新句法的一个精妙之处是它在处理更新时的确定性。在使用标准的UPDATE句法和联合时,可能有超过一个源行跟目标行匹配。在此情况下,无法预料更新操作会采用哪个源行的数据。

  而我们在使用MERGE句法时,假如存在多处匹配,它会抛出一个错误。这就需要开发者主意,要达到预想的目标,当前的联合条件还不够十分明确。

展开更多 50%)
分享

猜你喜欢

解析SQL Server 2008中的新语句:MERGE

编程语言 网络编程
解析SQL Server 2008中的新语句:MERGE

SQLServer 2008 Merge语句的OUTPUT功能

编程语言 网络编程
SQLServer 2008 Merge语句的OUTPUT功能

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 2008中的FileStream介绍

编程语言 网络编程
SQL Server 2008中的FileStream介绍

SQL Server 2008中SQL之WaitFor使用介绍

编程语言 网络编程
SQL Server 2008中SQL之WaitFor使用介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)

编程语言 网络编程
SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)

sql server中datetime字段去除时间的语句

编程语言 网络编程
sql server中datetime字段去除时间的语句

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在WPS演示2024中设置新对象的默认值

在WPS演示2024中设置新对象的默认值

JS函数实现鼠标指向后带图片的提示效果

JS函数实现鼠标指向后带图片的提示效果
下拉加载更多内容 ↓