rails中的3列上的rails migration唯一键(sql server)

时间:2016-05-20 10:42:32

标签: ruby-on-rails sql-server migration

我的数据库中有这个表:

create_table :month_holidays_translations, :id => false do |t|
  t.integer :month_holidays_id, null: false
  t.string :month, null: false
  t.string :language, null: false
end

我想创建一个在列上创建多个唯一键的迁移:month_holidays_id,month和language。我怎么做的? 当我执行add_index(下面的代码)时,这会在我的sql server数据库中创建索引但不是唯一键。

add_index "month_holidays_translations", ["month_holidays_id", "month", "language"], :unique => true

1 个答案:

答案 0 :(得分:0)

如果要添加没有索引的约束。这取决于您使用的数据库。但是下面的内容适用于你的情况。

class AddUniqeConstraintToMonthHolidaysTranslations < ActiveRecord::Migration
  def up
    execute <<-SQL
      ALTER TABLE month_holidays_translations ADD constraint month_holidays_id_month_language UNIQUE (month_holidays_id, month, language);
    SQL
  end
  def down
    execute <<-SQL
      ALTER TABLE month_holidays_translations
        drop constraint if exists month_holidays_id_month_language;
    SQL
  end
end

您可以查看参考资料以获取更多详细信息this