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

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

解讀SQL Server 2008的新語句MERGE

2024-08-31 00:46:03
字體:
供稿:網(wǎng)友
SQL Server 2008將包含用于合并兩個行集(rowset)數(shù)據(jù)的新句法。根據(jù)一個源數(shù)據(jù)表對另一個數(shù)據(jù)表進(jìn)行確定性的插入、更新和刪除這樣復(fù)雜的操作,運用新的MERGE語句,開發(fā)者用一條命令就可以完成。

對兩個表進(jìn)行信息同步時,有三步操作要進(jìn)行。首先要處理任何需要插入目標(biāo)數(shù)據(jù)表的新行。其次是處理需要更新的已存在的行。最后要刪除不再使用的舊行。這個過程中需要維護(hù)大量重復(fù)的邏輯,并可能導(dǎo)致微妙的錯誤。

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"

如你所見,具體操作是根據(jù)后面的聯(lián)合(join)的解析結(jié)果來確定的。在這個例子中,如果目標(biāo)和源數(shù)據(jù)表有匹配的行,就實行更新操作。如果沒有,就實行插入或者刪除操作來使目標(biāo)數(shù)據(jù)表和源數(shù)據(jù)表保持一致。

這個新句法的一個美妙之處是它在處理更新時的確定性。在使用標(biāo)準(zhǔn)的UPDATE句法和聯(lián)合時,可能有超過一個源行跟目標(biāo)行匹配。在這種情況下,無法預(yù)料更新操作會采用哪個源行的數(shù)據(jù)。

而當(dāng)使用MERGE句法時,如果存在多處匹配,它會拋出一個錯誤。這就提醒了開發(fā)者,要達(dá)到預(yù)想的目標(biāo),當(dāng)前的聯(lián)合條件還不夠明確。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆昌县| 建宁县| 醴陵市| 西吉县| 鲜城| 南雄市| 岑巩县| 伊川县| 台北市| 宁海县| 明溪县| 泾川县| 棋牌| 子长县| 密云县| 年辖:市辖区| 湘潭县| 嘉峪关市| 平罗县| 舞阳县| 蛟河市| 甘孜县| 九台市| 大石桥市| 绿春县| 屏东县| 西吉县| 渭源县| 永靖县| 新龙县| 栖霞市| 开平市| 鄱阳县| 满城县| 聂拉木县| 无棣县| 贡觉县| 介休市| 启东市| 九江县| 泰宁县|