2016-05-20 12 views
0

私は私のデータベースにこのテーブルを持っている:レールレールで3列に移行ユニークキー(SQLサーバー)

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を、月と言語。私はどのようにそれを行うのですか? add_index(下のコード)を実行すると、これはインデックスを作成しますが、SQL Serverデータベースには一意のキーは作成されません。

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

SQL UNIQUE Constraintのための参照を確認することができます。これはうまくいくはずです。 'add_index:month_holidays_translations、[:month_holidays_id、:month、:language]、:unique => true' – Meer

+0

ユニークキーはどういう意味ですか? 'unique:true'オプションは、あなたのインデックスが一意であることを確認します。それ以外にあなたは結果として何を見たいですか? –

+0

私はこれをしたくない: '#、 # ' – lolix

答えて

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 

私はユニーク制約が一意のインデックスが付属しています信じて、さらに詳細

関連する問題