【发布时间】:2017-05-06 13:19:03
【问题描述】:
我需要为 3 列(VARCHAR、INT 和 INT)创建多列索引,我们称它们为 varchar_col、int1_col 和 int2_col。对于VARCHAR 列,我需要应用lower(varchar_col) 表达式。
当我用表达式创建单列索引时
add_index :table, 'lower(varchar_col)', name: 'index_name'
它可以工作,但是当我尝试用
创建多列时add_index :table, ['lower(varchar_col)', :int1_col, :int2_col], name: 'index_name'
我收到
PG::UndefinedColumn: 错误:列“lower(varchar_col)”不存在
是否可以使用 Rails add_index 函数创建这样的索引,或者我需要在迁移文件中执行 SQL 查询? PostgreSQL 是否支持带表达式的多列索引?如果它支持,我必须在迁移文件中写什么才能让它工作?
感谢您的帮助!
附:我正在使用 Rails 5。
【问题讨论】:
标签: sql ruby-on-rails postgresql