2012-10-29 68 views
0

我用在我的項目的SQL查詢,旁邊代碼:上的重複鍵奇怪的問題

ActiveRecord::Base.connection.execute "insert into open_offer_counters (offer_id, udid, open_counter) values #{opened_events.join(", ")} on duplicate key update open_counter = open_counter + 1" 

我添加

add_index :open_offer_counters, :offer_id, :unique => true 
add_index :open_offer_counters, :udid, :unique => true 

到遷移的一個。但是當我試圖添加一個只有1個重複鍵的記錄時,這不起作用,而是更新鍵發生。基本上,如果只有兩個鍵(offer_id和udid)不同,這個代碼就可以工作。如果它們中的任何一個匹配另一個,則AR更新我的open_counter。如果只有兩個鍵匹配(offer_id和udid),我如何更新open_counter?

回答

0

問題通過添加

add_index(:open_offer_counters, [:offer_id, :udid], :unique => true) 

,而不是

add_index :open_offer_counters, :offer_id, :unique => true 
add_index :open_offer_counters, :udid, :unique => t 
解決