Ich verwende Rails-Migrationen, um ein Datenbankschema zu verwalten, und ich erstelle eine einfache Tabelle, in der ich einen nicht-ganzzahligen Wert als Primärschlüssel verwenden möchte (insbesondere eine Zeichenfolge). Um von meinem Problem zu abstrahieren, nehmen wir an, es gibt eine Tabelle employees
wobei die Mitarbeiter durch eine alphanumerische Zeichenfolge identifiziert werden, z. B. "134SNW"
.
Ich habe versucht, die Tabelle in einer Migration wie dieser zu erstellen:
create_table :employees, {:primary_key => :emp_id} do |t|
t.string :emp_id
t.string :first_name
t.string :last_name
end
Das Ergebnis ist, dass die folgende Zeile anscheinend völlig ignoriert wurde t.string :emp_id
und machte daraus eine Integer-Spalte. Gibt es eine andere Möglichkeit, wie Rails die PRIMARY_KEY-Beschränkung (ich verwende PostgreSQL) für mich generieren kann, ohne dass ich die SQL in einer execute
anrufen?
ANMERKUNG : Ich weiß, dass es nicht am besten ist, String-Spalten als Primärschlüssel zu verwenden, also bitte keine Antworten, die nur sagen, dass man einen Integer-Primärschlüssel hinzufügen soll. Ich werde vielleicht trotzdem einen hinzufügen, aber die Frage ist immer noch gültig.