解读SQL Server 2008的新语句MERGE


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

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

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

  以下是引用片段:  

merge[target]t
  using[source]sont.id=s.id
  whenmatchedthenupdatet.name=s.name,t.age=s.age--use"rowset1"
  whennotmatchedtheninsertvalues(id,name,age)--use"rowset2"
  whensourcenotmatchedthendelete;--use"rowset3"

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

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

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



相关阅读:
CSS教程:网页中英文字体的设置
javascript[对象.属性]集锦(建议加入精华区
将jQuery应用于login页面的问题及解决
DHTML Slide Show script图片轮换
oracle实现递归查询
Linux系统内核 2.6.28 五大特性
网页开发人员必须知道的10个不常用HTML标签
JavaScript在ASP中实现掩码文本框
Vista用Defrag命令整理磁盘碎片
学习WEB标准心得:网页重构的思路
如何为Exchange服务重建IIS虚拟目录
CentOS中安装商业主机控制面板DTC(Domain Technologie Control)
新浪滑门技术
让XHTML与HTML兼容
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 那节课让我难忘作文400字 江西老表(节选) 紫瞳公主的小恶魔作文1600字 2012年公司办公室工作个人总结-个人工作总结 冷漠的有趣作文1200字 活得比父母好,该不该有亏欠感 公安民警述职报告 2015年春季幼儿园园务计划 邪恶女生 单纯男孩=不得不爱 自爱代替患得患失 优秀教师评选述职报告 我们的家在哪? 关于描写外婆的初中作文_我的外婆 故乡的收获------乐在故乡 叶城(八)作文1000字 害羞的彩虹桥 闪烁其词的意思 傻傻的等待会有怎样的结果 初中初一作文700字:在流感肆虐的日子里 跟我回家经典台词 坚强 乖、、丫頭不哭 风入松(新韵) 小区暖气申请供暖 魔法师的帽子读后感600字 校园安全保卫工作总结 我最喜爱的人作文150字 如果时光能倒流 我也来论诗 我们、亲手埋葬了自己的爱作文450字 人生的意义不在于拿一手好牌 午后小时光 2016年度全县教育工作会议上的讲话 弯腰与不说话两则故事 春天的嵩洲公园 《菜园里》教学反思 周杰伦最感人的二十八句歌词 五一劳动节搞笑短信 心中的话对你说作文 2014行政人事部年度工作总结 谈日本强占钓鱼岛 初中班长竞选稿 银婚简短祝福语 夸张句摘抄 我还爱他 童话里不是骗人的 念为何在此成为了伤痛 物是人非,人走茶凉 校园歌唱比赛活动方案_活动方案 六年级“保护动物”主题班会 高中高三作文1000字:雨后

Copyright © 2016 phpStudy |