久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

解讀SQL Server2008的新語句MERGE

瀏覽:173日期:2023-11-03 08:20:04

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

標簽: Sql Server 數據庫
主站蜘蛛池模板: 博野县| 玉门市| 闻喜县| 保山市| 尉氏县| 吉木萨尔县| 宕昌县| 泰顺县| 阜南县| 雅安市| 沙湾县| 明星| 平塘县| 咸宁市| 龙门县| 板桥市| 德保县| 札达县| 安远县| 民乐县| 资溪县| 莆田市| 井冈山市| 天全县| 商城县| 岳阳市| 贡觉县| 屯昌县| 闻喜县| 横山县| 鄂尔多斯市| 安泽县| 大港区| 体育| 苍山县| 深圳市| 马关县| 安乡县| 连南| 通河县| 华池县|