北大青鸟中博
在线报名 | 成绩查询 | 中博南京校区 | 中博技术论坛 |
高中生就业方案 大学生就业方案 在职、转行、待业人员就业方案 中博校区环境 2008高考特招 北大青鸟招生公告 校庆6周年活动
您的位置:新闻动态 - 行业新闻

解读SQL Server2008的新语句MERGE
作者:中博 出处:中博 时间:2007-08-21

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

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

  Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个操作步骤合并成单一语句。他给出了如下的例子:

以下是引用片段:

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句法时,如果存在多处匹配,它会抛出一个错误。这就提醒了开发者,要达到预想的目标,当前的联合条件还不够明确。


>>更多新闻

前一篇:Spring的优秀工具类盘点(一)文件资源操作和Web 相关工具类
后一篇:.NET环境下几种不同的邮件发送解决方案

 
在线咨询  
黄老师 陆老师
韩老师 值班老师
中心简介
校区简介
校区环境
关于北大青鸟
特色优势
常见问题解答
 
 
ACCP软件工程师课程
什么是ACCP
ACCP5.0课程介绍
各课程定位与特色
各阶段课程
教学模式
ACCP5.0课程体系
ACCP认证证书
 
关于中博   联系我们   校区招聘   友情链接
深圳北大青鸟 北京北大青鸟 北大青鸟杭州 北大青鸟 北大青鸟深圳 北大青鸟深圳罗湖 杭州北大青鸟 郑州北大青鸟 海淀北大青鸟
 
全国免费服务电话:800-828-5191(电信用户使用)
  报名咨询电话:0516 - 85628888 85629999 黄老师 陆老师
地址:徐州市解放南路181科技培训中心(六中对面)
乘车路线:11、19、20、65、39、60、51、64、609、游1、游2至和平路六中站下 苏ICP备08102142号