2016-03-30 4 views
1

Dies ist eine Folge zu meinem previous question. Im Grunde habe ich eine Tabelle, die zwei Fremdschlüssellinks in zwei andere Tabellen hat. Aber ich denke, der beste Weg ist, einen Primärschlüssel der Tabelle selbst hinzufügen, so dass es zu:Alambic: Hinzufügen von ID-Feld zu bestehenden Tabelle

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

Das Problem ist, dass es bereits viele Elemente in der Tabelle. Also, wenn ich alembic upgrade head lief, fügen Sie 0 als den Wert aller vorhandenen Elemente hinzu. Dies bricht offensichtlich meinen Code.

Gibt es eine Möglichkeit, nachträglich zu den vorhandenen Elementen id s hinzuzufügen?

Antwort

1

Sie sollten nicht mehrere Primärschlüssel in einer Tabelle haben. See this question. Was möchten Sie tun? Vielleicht kann Ihr Problem gelöst werden mit two column index

+0

Also in einer N zu N Link-Tabelle ist es im Grunde falsch, nur die zwei Fremdschlüssel, richtig? – lang2

+0

Sie können zwei Fremdschlüssel haben, aber Primärschlüssel sollte eins sein. –

1

Was Sie wollen, ist keine zusätzliche id Spalte als Primärschlüssel. Stattdessen möchten Sie Ihren vorhandenen zusammengesetzten Primärschlüssel beibehalten und eine Ersatzadresse id hinzufügen (nicht eine Primärschlüsselspalte), die automatisch inkrementiert, um die Reihenfolge der Einfügung zu verfolgen. Da Sie jedoch alle Ihre Zeilen bereits in die Tabelle eingefügt haben, haben Sie die Reihenfolge verloren. Daher ist es nicht sinnvoll, diese Reihenfolge wiederherzustellen. Sie können einfach 0 dieser Spalte ohne Problem zuweisen.

Verwandte Themen