0
在UI中,我將一個數據表傳遞給存儲過程。的類型參數的是具有下列結構使用MERGE刪除數據或插入
Personkey int
ComponentKey varchar
該數據需要進入一個表,和數據存在於表中,但不是在數據表中應刪除用戶定義的表中的字段。
實施例表數據
PersonKey ComponentKey
123 A1
456 B9
而我的表具有2行,一個匹配行和一個新行
實施例的數據表數據
PersonKey ComponentKey
123 A1
786 Z6
的結果是456/B9行應該被刪除,123/A1行將不會發生任何變化,並且應該插入786/Z6行。
我相信我可以使用MERGE語句,但我不知道如何形成它。
我明白,當不匹配我應該做插入,但刪除部分進入它呢?
MERGE Components
USING @passedInData
ON PersonKey = DatatblPersonKey AND ComponentKey = DatatblComponentKey
WHEN MATCHED THEN
-- DO nothing...
WHEN NOT MATCHED
INSERT (PersonKey, ComponentKey) VALUES (DatatblPersonKey, DatatblComponentey);
編輯:要清楚,數據表可以包含許多行,對於同一個人密鑰,但組件密鑰會不同。
實施例的數據表數據
PersonKey ComponentKey
123 Z6
123 C5
實施例表數據
PersonKey ComponentKey
123 A1
456 B9
插入上述數據表後的結果應該是
PersonKey ComponentKey
123 Z6
123 C5
456 B9
注意,123/A1已經被刪除和456/B9仍在桌面上。
我更新了我的問題,因爲這種方法沒有奏效。 – andrewb
您的執行可能沒有奏效,但方法確實如此。我編輯了我的答案,以包含數據的結構和針對您的問題的編碼解決方案。再次強調,你必須注意確定你的目標是什麼。 – btberry