[转载]北大青鸟:解读SQL Server 2008的新语句MERGE
来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:38:47
SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者用一条命令就可以完成。
对两个表进行信息同步时,有三步操作要进行。首先要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并可能导致微妙的错误。
Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个操作步骤合并成单一语句。他给出了如下的例子:
merge [target] tusing [source] s on t.id = s.idwhen 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句法时,如果存在多处匹配,它会抛出一个错误。这就提醒了开发者,要达到预想的目标,当前的联合条件还不够明确。
来源:http://www.accp-teem.com.cn/ArticleView/2007-7-21/Article_View_1198.Htm#
对两个表进行信息同步时,有三步操作要进行。首先要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并可能导致微妙的错误。
Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个操作步骤合并成单一语句。他给出了如下的例子:
merge [target] tusing [source] s on t.id = s.idwhen 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句法时,如果存在多处匹配,它会抛出一个错误。这就提醒了开发者,要达到预想的目标,当前的联合条件还不够明确。
来源:http://www.accp-teem.com.cn/ArticleView/2007-7-21/Article_View_1198.Htm#
[转载]北大青鸟:解读SQL Server 2008的新语句MERGE
北大青鸟SQL SERVER学习总结
北大青鸟sql课件
SQL Server 2008 setup
北大青鸟sql课件 - 基础 - 周老师科研站
北大青鸟西安炜晨,就业最好的北大青鸟!
SQL Server的有效安装
sql server 游标的使用
SQL Server的有效安装
SQL Server 2008 中新的日期时间数据类型
sql server
SQL Server 2008 对 T-SQL 语言的增强-其它相关问题-华夏名网
北大青鸟:通向未来的职业生涯设计
北大青鸟 不一样的大学 不一样的精彩——北大青鸟顺义中心新闻
sql server 中易混淆的数据类型
SQL Server 中易混淆的数据类型
SQL Server日期格式的转换
SQL Server日期格式的转换
微软公司向 SQL Server 2005 的转移
SQL Server日期格式的转换
Sql server不断增加的内存占用
SQL Server 2005 Compact Edition的安全性
SQL SERVER数据库全文索引的示例
sql server 中易混淆的数据类型