尋找一些關於Upsert(insert或if exists,then update)過程在數據庫編程中被認爲是不好的做法的見解。我在SQL服務器上工作,如果它有任何相關性。數據庫Upserts - 好還是壞的做法?
在我幾個月前工作過的地方,常駐數據庫大師以新編寫的db編碼標準(大部分我同意)表示,應該避免使用Upserts。
我無法真正看到這樣的邏輯原因,並認爲我的自我合理地意識到良好的編程習慣。我認爲它們對於直接數據管理非常有用,並有助於避免過多的存儲過程數量。
尋找一些見解/討論,這將幫助我得出這個結論。
謝謝。
更新響應於評論:
我指的是特定的上下文是在數據庫中的域實體數據表示的創建或更新。例如,說一個「Person」對象作爲數據庫中「Person」表的表示形式存在。我只需要一個用於創建新人員或更新現有人員的機制。在這裏,我可以選擇創建一個Upsert存儲過程,或者兩個單獨的存儲過程 - 一個用於更新,另一個用於插入。
任何人認爲的優點或缺點?
從Oracle的角度來看,改用MERGE語句。 – DCookie 2010-12-22 15:37:14
MERGE也存在於SQL Server(2005+我相信) – RPM1984 2011-01-12 11:16:29