SQLiteStudio - Primärschlüssel Fremdschlüssel Verknüpfung wie korrekt erstellen?
Hallo zusammen,
ich erzeuge gerade einen Datensatz mit Hilfe SQLiteStudio (3.2.1).
Nun habe ich eine Tabelle angelegt mit Maschinen. Hierbei sollen MaschinenID und MaschinenBEZ gemeinsam den Primärschlüssel darstellen.
Zudem gibt es eine Tabelle Bearbeitungszeiten. Hier werden jeweils den Maschinen und Produkten Bearbeitungszeiten zugewiesen --> Ich will die Maschinen in dieser Tabelle also als Fremdschlüssel verwenden. (Das ist soweit korrekt, oder?)
Wenn ich das jedoch so einstelle, bekomme ich eine Fehlermeldung wenn ich in der Tabelle Bearbeitungszeiten eine Zeile hinzufüge, obwohl ich die MaschinenID und MaschinenBEZ angebe, wie in Tabelle Maschinen hinterlegt.
"Error while committing new row: foreign key mismatch - "Bearbeitungszeiten" referencing "Maschinen".
Kann mir jemand sagen wie ich das richtig einstellen muss? Finde leider keine Hilfe sonst im Internet.
2 Antworten
Die Maschinenbezeichnung als Primarykey ergibt meiner Meinung nach keinen Sinn.
Die MaschinenID müsste bereits eindeutig sein?
Diese MaschinenID gibst du in deine Bearbeitungszeitentabelle als Fremdschlüssel.
Das heißt die Bearbeitungszeitentabelle referenziert auf die MaschinenID und du kannst wenn nötig später "drüber joinen".
Frage 1:
Hierbei sollen MaschinenID und MaschinenBEZ gemeinsam den Primärschlüssel darstellen.
Warum? Ist der Maschinen-ID nicht eindeutig? Wenn nein, warum nicht? Warum willst Du die Maschinenbezeichnung in jede Tabelle einfügen müssen, die eine Maschine referenziert?
Frage 2:
Füge hier den kompletten SQL-Code für das Erzeugen beider Tabellen ein. Sonst weiß kein Mensch, wie Du das machst.
Frage 1:
Ok theoretisch würde auch die MaschinenID alleine ausreichen. Habe hierbei jedoch genau das gleiche Problem, wenn ich MaschinenID als Primärschlüssel festlege und dann nur die MaschinenID wieder in der anderen Tabelle verwende.
Frage 2:
Also ich mache das ganze mit SQLiteStudio, hier wird das je recht benutzerfreundlich gemacht, also nicht selbst wirklich ein SQL-Code geschrieben.
EDIT: Ich habe es gerade selbst gelöst bekommen :D Weiß nicht genau was das Problem war, aber jetzt funktioniert es plötzlich.
Aber Danke dir! :)