Hallo Ich bin mit einem Fremdschlüssel Einschränkung in meiner Derby eingebettete Tabelle stecken. Ich habe drei Tische, nämlich Zimmer, Pakete und Reservierung.Derby Fremdschlüssel Einschränkung Problem
Zimmertisch --- RoomId | RaumName | Miete | Beschreibung
Packages Tabelle --- pkgId | Name | Bewerten | Details
Reserviertabelle --- Id | GastID | pkgId | RaumId | ChkIn | ChkOut | Datum |
Also die drei Fremdschlüssel in Reservierungstabellen sind GuestID, PkgId und RoomId.
Alles, was ich wollte, ist die Fremdschlüssel zu akzeptieren einige Werte, die nicht in ihren jeweiligen Tabellen ist. Zum Beispiel möchte ich pkgId in der Reservierungstabelle auf 0 setzen, wenn ein Gast keine Pakete nimmt. Aber aus irgendeinem Grund bekomme ich Fehler "UPDATE auf Tabelle 'RESERVATION' verursachte eine Verletzung der Fremdschlüsseleinschränkung .. für Schlüssel (0)". Ist das, weil die 0 kein Wert in der Tabelle "Packages" ist? Seltsamerweise war es kein Problem mit meiner früheren Bewerbung. Hat Derby etwas mit neuen JAR-Dateien geändert? Oder wie kann ich dieses Problem lösen? Ich möchte, dass sowohl RoomId als auch pkgId zu einem bestimmten Zeitpunkt in der Reservierungstabelle 0 akzeptieren, während die Fremdschlüsseleinschränkung beibehalten wird. Kann mir jemand helfen ? Danke im Voraus!
verwenden entweder neue Datensatz in Paketen Tabelle einfügen => 'einfügen in Pakete (PkgID, name) values (0, 'Gast nimmt keine Pakete') 'oder entfernen Sie den Fremdschlüssel oder verwenden Sie den NULL-Wert. Der Fremdschlüssel ist eine Einschränkung, die besagt, dass "der Fremdschlüsselwert ** immer ** in der referenzierten Tabelle vorhanden sein muss". – krokodilko
Ich denke, ich werde mit dem Einfügen einer neuen Zeile gehen und diese Zeile vom Endbenutzer ausblenden. Aber ich bin nicht sicher, wie es in meinen früheren Derby-Versionen funktionierte. Vielen Dank. – Thomson