沒有MySQL的答案請!插入重複密鑰的解決方案
的基本查詢如下(假設A是關鍵)
INSERT INTO destination (A,B,C)
SELECT a1,b1,c1
FROM source
WHERE (selectconditions) ;
源包含多條記錄,可能會或可能不會已經在目的地,這意味着插入就會失敗的重複記錄遇到。
所需的行爲:INSERT或忽略
這是給定的問題所需的方案。如果可以,請插入,否則繼續。
僞C#/ java的:通過增加
AND NOT EXISTS (SELECT A FROM destination INNER JOIN source on destination.A = source.a1)
到查詢結束
foreach(record in selectQuery)
{
try { destination.insert(record) }
catch(insertionException){//squelch}
}
這可以在SQL處理 - 換句話說,檢查插入之前。
處理這種常見情況的其他方法有哪些?這些技術的優點和缺點是什麼?
你總是可以讓A成爲主鍵? – 2009-07-20 20:53:23