我們有一個基於SQL-server DB的內部軟件,它有一個主表和多個連接表。我們存儲的數據的性質很難描述,但假設我們有一個帶有一些連接表的客戶表:訂單,出貨量,電話記錄,投訴等。SQL master-detail表 - 更好的UPDATE或DELETE + INSERT?
我們需要將此軟件與外部軟件同步擁有自己的數據庫(具有相同的結構),並生成一個XML文件,其中包含關於「客戶」的更新信息(每個客戶一個文件)。更新可以在主表中和/或在0到n連接表中。
要導入這些文件,一個選項是查詢所有涉及的表並將它們與XML文件進行比較,可能會添加 - 更新 - 刪除行。
這將需要大量的編碼。
另一種選擇是完全刪除給定客戶的所有數據(至少從已連接的表中)並再次插入它們。
這樣做效率不高。
請認爲主表有13個字段,並且有大約6個表具有3到15個字段。
在這個應用程序中,我們主要使用LINQ。
你將如何進行? PS:我在StackOverflow上發現了一些關於這個主題的答案,但是幾乎所有的關注(單行)都是單表格。
謝謝讓你的答案。 數據永遠不會從我們的應用程序中導出。我們的應用程序主要是隻讀的,數據由第三方應用程序定期更新(通過xml)。 當然,每個xml文件都包含有關單個客戶的所有數據(包括我在數據庫中已有的數據以及需要添加/編輯/刪除的數據)。 因此,每次文件進入時,我都不知道應該更新什麼,除非我比較每一行。 我不清楚我如何使用標誌來處理所有這些。 – Disti
標誌僅用於導出(其他系統無法告訴您什麼更新,插入,刪除)和邏輯刪除。對於導入,只有您可以創建「外部ID」,並且如果表很大,則還可以使用哈希列來查明是否有一個更新。您甚至可以對XML文件進行散列碼檢查,以檢查文件是否與先前版本相比有任何變化 – jean