我需要更新表中的記錄,但有可能記錄不存在,所以我需要插入記錄。通過ADO.NET命令對象執行多個SQL語句
下面是一條SQL語句,它通過首先更新記錄來完成我的目標,如果它不存在,它會執行插入操作。我在想,如果它可以通過ADO.NET命令對象直接執行,還是需要進入存儲過程。
UPDATE MyTable SET ReservationDate = @ReservationDate WHERE CustomerNumber = XXXX;
IF @@ROWCOUNT=0
INSERT INTO MyTable (CustomerNumber , ReservationDate)
VALUES (@CustomerNumber , @ReservationDate)
如果我可以經由命令對象,而無需存儲過程執行它這將意味着用於部署時間少一個依賴性(即部署存儲過程)。
真棒答案和水晶般清晰的例子!我從來不知道「合併」命令。謝謝! – webworm 2014-11-08 21:55:22
如果在確定更新/插入哪些記錄時使用了更多的字段,這也可以工作嗎?例如......如果它不僅僅是CustomerNumber,還有更新/插入預訂時使用的VehicleNumber?就像客戶擁有多輛車一樣。 – webworm 2014-11-08 22:32:34
爲什麼不能?只需準備適當的參數,使用它們來構建SOURCE表並調整JOIN以匹配/不匹配目標的主鍵。更新或插入如下 – Steve 2014-11-08 23:45:15