在重复的关键wierd问题上

时间:2012-10-29 13:53:59

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

我在我的项目中使用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个重复键的记录时,这不起作用,而是发生更新密钥。基本上,如果只有2个键(offer_id和udid)不同,则此代码可以工作。如果其中任何一个与其他任何一个匹配,AR会更新我的open_counter。如果只匹配2个密钥(offer_id和udid),我如何更新open_counter?

1 个答案:

答案 0 :(得分: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