2015-11-17 32 views
1

我在寫一個函數來一次執行多個更新。多個更新 - 可能的錯誤

我被示例代碼啓發發現here

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) 
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2); 

但我的函數的輸出是這樣的:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) 
ON DUPLICATE KEY UPDATE id=VALUES(id), Col1=VALUES(Col1), Col2=VALUES(Col2); 

所以我擔心我的輸出包括主鍵字段更新之間。

我試過了代碼,它似乎工作正常(包括主鍵) 這可以產生我還沒有遇到的錯誤嗎? 我是否必須從查詢的第二部分刪除主鍵?

回答

1

如果id是主鍵並且是表格中唯一的唯一鍵,則不需要擔心id = VALUES(id)。在這種情況下,id用於匹配,因此該值不會更改。

如果表上有多個唯一鍵,那麼這可能是個問題。如果您的數據是:

id col1 col2 
2  1  1 

而且你有(col1, col2)一個唯一的密鑰,那麼當你插入(1, 1, 1),該值將變爲:

id col1 col2 
1  1  1 
+0

這樣我就可以使用這個功能只能用於更新表一個字段的主鍵。謝謝 – genespos