国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

解讀SQL Server2008的新語句MERGE

2024-08-31 00:45:47
字體:
來源:轉載
供稿:網友

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句法時,如果存在多處匹配,它會拋出一個錯誤。這就提醒了開發者,要達到預想的目標,當前的聯合條件還不夠明確。

本文收集整理自互聯網,若您是原文作者,請來信更改作者及出處Post#vip.qq.com(把#改為@)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济源市| 兴山县| 盖州市| 博爱县| 阿克陶县| 尚义县| 安多县| 都江堰市| 兴国县| 米脂县| 天柱县| 黔江区| 易门县| 涿州市| 南川市| 克拉玛依市| 黄大仙区| 潞西市| 龙胜| 木里| 宜黄县| 白山市| 会宁县| 拉萨市| 双鸭山市| 沂水县| 湖南省| 麻阳| 南陵县| 克什克腾旗| 嘉祥县| 庄浪县| 淮南市| 赤城县| 江津市| 萝北县| 金寨县| 涟源市| 宜阳县| 安福县| 开江县|