2011-11-01 49 views
0

我有一個asp.net web應用程序,用戶可以在其中更新數據庫中的表。我想知道這樣做的正確方法。正如你在下面的圖片中看到的,紅色陰影區域是我有共同點的數據,我做了不是需要更新。有關更新表的sql server理論

enter image description here

這裏是我需要採取的步驟:

  1. 如果存在
  2. 刪除數據,是不是在用戶更新
  3. 添加數據不更新數據來自用戶更新,表中尚未列出

我需要審覈此t也能,所以我會有一個觸發器。我想從理論上知道對錶格進行這種更新的最佳方式是什麼?

非常感謝Aaron介紹了merge的概念。

下面是表數據的樣子:

foreignkey model primarykey 
1   AA  1 
1   AA1  2 
1   AA3  3 
23   B  4 
22   C  5 

用戶將增加,看起來像這樣的數據:

foreignkey model primarykey 
1   A1  1 
1   AA1  2 
1   AA3  3 
22   C  5 

正如你可以看到,第一行進行了更新,並倒數第二行被完全刪除。你能幫我用這個合併聲明嗎?

+0

還有其他人想要刺嗎? –

回答

3

是的,這是可能的,它被稱爲合併。請參閱SQL Server的文檔MERGE Statement

如果您不想執行任何更新(如果數據已經存在),那麼就不要添加WHEN MATCHED子句。使用WHEN NOT MATCHED BY SOURCEWHEN NOT MATCHED BY TARGET插入/刪除缺失/刪除​​的行。

+0

非常感謝我更新了這個問題 –