2012-03-05 75 views
0

如果我的源中有多個行與我的目標不匹配,並且插入一個會導致匹配(並且如果它存在,會導致不匹配),我是否安全所有將被合併的假設?也就是說,將要合併的來源中的記錄被標識並且在它們中的任何一個被添加之前註定要合併?這似乎是如何工作的,下面沒有任何東西與它相矛盾,但我不確定這是一個確定的保證。TSQL合併不匹配

Johnny Microsoft says:

WHEN NOT MATCHED [BY TARGET] THEN

Specifies that a row is inserted into target_table for every row returned by 

<table_source> ON <merge_search_condition>一點不 匹配在target_table一排,但確實滿足附加搜索 條件,如果存在。要插入的值由 <merge_not_matched>子句指定。 MERGE語句只能有一個WHEN NOT MATCHED子句。

回答

0

合併掃描每一行,並且它只會傳遞一次數據。因此,在語句執行時滿足WHEN MATCHED子句的所有記錄都將受到影響,並且只有在語句執行時滿足WHEN NOT MATCHED子句的記錄纔會受到影響。

+0

謝謝,接受答案,你有沒有找到任何文件,或者你只知道? – 2012-03-30 12:08:58

+0

這既是我的經驗,也是我多年來閱讀的內容。在merge語句中有一個關於SQLAuthority的博客,它聲明你可以在執行計劃中看到「執行次數」和受影響的行數等等...... http://blog.sqlauthority.com/2010/06/ 08/SQL服務器合併的操作 - 插入 - 更新 - 刪除 - 在單執行/ – elvis 2012-03-30 16:28:45