2011-08-11 34 views
3

我想插入行如果包含特定值的行存在,並且不更新它。MySQL:INSERT IGNORE或ON DUPLICATE KEY UPDATE檢查多個列而不是唯一列

具體地說:

A柱user_id=5, user_zip=12345, distance=600存在在數據庫上。

如果我嘗試插入user_id=5, user_zip=12345, distance=700它應該只是更新distance

,但我嘗試插入user_id=5, user_zip=67890, distance=800應該插入新行。

我無法定義列user_zipdistance的唯一性,以便我可以使用重複鍵更新。

回答

3

我想你是誤解ON DUPLICATE KEY UPDATE如何工作。隨着(user_id, user_zip)唯一約束,這應該工作:

INSERT INTO yourTable (user_id, user_zip, distance) VALUES (5,12345,600) 
ON DUPLICATE KEY UPDATE distance=600; 

你不必定義user_zip獨特的(這就是我理解你的問題),只是的user_iduser_zip組合。所以你仍然可以有兩個或更多的行user_id,只是user_zip不能匹配這些行。

相關問題