2016-03-30 18 views
1

これは私のprevious questionの後に続くものです。基本的に私は、2つの他のテーブルに2つの外部キーリンクを持つテーブルを持っています。しかし、私は最善の方法は、それがなるように、テーブル自体に主キーを追加することであると思う:alembic:既存のテーブルにidフィールドを追加する

id, int, primary 
foreign_id_1, int, primary 
foreign_id_2, int, primary 

問題は、多くの項目がテーブルに既に存在していることです。だから、alembic upgrade headを実行したときには、既存のすべての項目の値として0が追加されます。これは明らかに私のコードを破る。

idを遡って既存のアイテムに追加する方法はありますか?

答えて

1

複数の主キーを1つのテーブルに持つべきではありません。 See this question. あなたは何をしたいですか?おそらく、あなたの問題が解決される可能性がありますtwo column index

+0

N対Nのリンクテーブルでは、2つの外部キーしか持たないのは本質的に間違いです。 – lang2

+0

あなたは2つの外部キーを持つことができますが、主キーは1でなければなりません。 –

1

idの列はプライマリキーとして追加しません。その代わりに、既存の複合主キーを保持し、代入文を追加するために代入するid列(ではなく、主キー列)を追加する必要があります。しかし、あなたはすでにテーブルにすべての行を挿入しているので、あなたは順序を失ってしまったので、その順序を "回復"することは意味がありません。問題なしで0をその列に割り当てることができます。

関連する問題