2015-04-28 105 views
0

我有一個SQL Server中有一個主鍵列的表。如果我將一個新的更新輸入到一個表中,其主鍵已經作爲一個條目存在,我應該在插入之前刪除以前的條目,還是有辦法覆蓋現有的條目?如果主鍵已經存在,如何將插入覆蓋到Sql Server表中?

+3

使用'merge'而不是'insert'。 https://technet.microsoft.com/en-us/library/bb522522%28v=sql.105%29.aspx –

+0

這似乎是正確的答案,絕對幫助我! – tufelkinder

回答

0

如果您使用.net的實體框架去刪除然後插入,因爲這不會混淆在內存中保存的EF對象標識符。

+0

有沒有一個最佳的方法來做到這一點。或者我應該這樣做:選擇檢查它是否存在,刪除它是否存在,繼續插入? – ab11

+0

如果您使用實體框架,最簡單的方法是通過鍵獲取對象。正如你所說,如果它存在刪除它,然後去插入。這不會是最佳的方式,因爲會有2個數據庫調用(1來獲取另一個來插入),更不用說對象序列化和轉換了。最佳方式是@Daniel E.建議並使用合併語句,您可以將其放入存儲過程並以任何方式在Entity框架中使用。你只會有1個數據庫調用。 – sarin

相關問題