我有一個名為表Customers里面包含了一些如列FirstName,LastName,DateFileOpened,OrderedInLastMonth,等...每行有20多個欄目,并有大約500行。
每小時,我都有一種機制可以抓取此資料的另一個來源以獲取更新的客戶記錄,并將它們放入臨時表中,然后需要將其復制到我的主Customers表中。但是,任何或所有新行中的任何或所有列可能與 中的現有列不同Customers。
目前,為了避免創建幾乎重復的記錄,我非常糟糕的代碼會執行例如 a delete from [Customers] where CoOrigin = 'England',然后匯入新的記錄來代替它們。但是,我還有其他查詢需要與此同時運行,這通常會妨礙這些查詢,導致其他查詢回傳 0 資料,因為可能回傳的客戶記錄丟失,這要歸功于 delete 命令.
再一次,我知道這是糟糕的編碼,但我還是個新手。我查看了更新/替換陳述句,但它們似乎需要指定每行中的哪些列需要更新,但它可以是 20 多個中的任何一個。我知道這可以完成任務,但似乎更糟糕的代碼。我也不確定如何參考新記錄匯入的臨時表,然后再將它們復制到主Customers表(并洗掉臨時表)。
您能給我的任何幫助或指示將不勝感激。謝謝。
uj5u.com熱心網友回復:
您正在處理微量資料,因此您可以使用“大錘”方法來重繪 每個客戶,而不會影響其他流程。
begin;
lock table customer in exclusive mode;
delete from customer;
insert into customer select from temp_customer;
commit;
需要訪問客戶表的行程將在更新完成時阻塞(最多幾秒鐘),然后繼續不受影響。
uj5u.com熱心網友回復:
試試 SQL Trigger 也許它可以幫助你解決這個問題
https://www.sqlservertutorial.net/sql-server-triggers/sql-server-create-trigger/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322825.html
標籤:sql sql-server 查询语句
下一篇:SQLServer查詢解決
