【问题标题】:How to add both a partial and full index to a single column?如何将部分索引和完整索引添加到单个列?
【发布时间】:2015-12-08 21:45:10
【问题描述】:

我正在尝试使用完整索引和 create_table 块内的部分索引来索引我在单个列上的表,如下所示:

t.index [:streamer_id], :name => "index_referral_programs_on_streamer_id"
t.index [:streamer_id], :where => "active is true", :unique => :true, :name => "index_active_referral_programs_on_streamer_id"

但是,迁移后只有第二个索引会添加到我的架构中。是否可以在单个列上同时具有部分索引和完整索引?如果是这样,我该如何实现呢?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord indexing


    【解决方案1】:

    change_table 块中的单个迁移中使用这两行可以正常工作。将它们添加到 create_table 块中不起作用。

    基于the source of ActiveRecord::ConnectionAdapters::TableDefinition#index,这是create_table-作用域index 函数的限制。无论如何,将它们直接添加到create_table 似乎是不习惯的。我建议:

    create_table :referral_programs do |t|
      # whatever columns you need in the table
    end
    add_index :referral_programs, [:streamer_id], name: "index_referral_programs_on_streamer_id"
    add_index :referral_programs, [:streamer_id], where: "active is true", unique: true, name: "index_active_referral_programs_on_streamer_id"
    

    【讨论】:

    • 谢谢贝尼兹!这就是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 2012-12-23
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多