Pet*_*kov 3 sql postgresql ruby-on-rails
我需要为 3 列(VARCHAR,INT和INT)创建多列索引,让我们称它们为varchar_col,int1_col和int2_col。对于VARCHAR列,我需要应用lower(varchar_col)表达式。
当我用表达式创建一列索引时
add_index :table, 'lower(varchar_col)', name: 'index_name'
Run Code Online (Sandbox Code Playgroud)
它有效,但是当我尝试创建多列时
add_index :table, ['lower(varchar_col)', :int1_col, :int2_col], name: 'index_name'
Run Code Online (Sandbox Code Playgroud)
我收到
PG::UndefinedColumn: 错误:列“lower(varchar_col)”不存在
是否可以使用 Railsadd_index函数创建这样的索引,或者我需要在迁移文件中执行 SQL 查询?PostgreSQL 是否支持带表达式的多列索引?如果它支持,我必须在迁移文件中写入什么才能使其工作?
感谢您的任何帮助!
PS我正在使用Rails 5。
您可以将带有表达式的列作为字符串发送:
add_index :table, 'lower(varchar_col), int1_col, int2_col', name: 'index_name'
Run Code Online (Sandbox Code Playgroud)