Ich habe 2 Tabellen erstellt, table123
und items_ordered
.Wie Hinzufügen eines Primärschlüssels und Fremdschlüssel zu einer vorhandenen Tabelle in Microsoft SQL Server-Datenbank
table123
enthält 5 Spalten:customerid
,firstname
,surname
,city
undstate
items_ordered
enthält 5 Spaltencustomerid
,order_date
,item
,quantity
undprice
.
Ich möchte einen Primärschlüssel in table123
auf der customerid
Spalte und einem Fremdschlüssel in items_ordered
auf der customerid
Spalte erstellen.
Hier ist der Code habe ich eine primäre & Fremdschlüssel, um zu versuchen und zu erstellen:
ALTER TABLE table123
ADD PRIMARY KEY (customerid);
ALTER TABLE items_ordered
ADD FOREIGN KEY (customerid)
REFERENCES table123 (customerid);
Allerdings, wenn ich diese Befehle ausführen, heißt es
nicht PRIMARY KEY-Einschränkung auf NULL festlegbare definieren Spalte in der Tabelle 'table123'
Wie kann ich das beheben? Es gibt auch keine Nullwerte in den Tabellen.
P.S. Ich habe diese alternative Methode versucht, mit einem Primärschlüssel und Fremdschlüssel zu erstellen:
SELECT table123.customerid, table123.surname,
items_ordered.order_date, items_ordered.item, items_ordered.price
FROM table123, items_ordered
WHERE table123.customerid = items_ordered.customerid;
Der obige Code gibt mir eine Tabelle, die Verknüpfung customerid an die Kundennamen und kauften Produkt. Aber ist das die richtige Art, einen primären & Fremdschlüssel zu erstellen?
Well , der Fehler sagt alles - Sie können ** keinen Primärschlüssel für eine Nullable-Spalte erstellen - also stellen Sie sicher, dass Sie in Ihrer Definition für 'table123'' 'haben CustomerId INT NOT NULL - ** dann ** können Sie einen Primärschlüssel definieren.Und Ihr zweiter Versuch ist fehlerhaft, weil er die ** richtige ANSI/ISO JOIN-Syntax ** verwenden sollte (anstatt die Tabellen durch Komma getrennt in der 'FROM'-Klausel aufzulisten) - und ** ** ** nicht eine Primärdatei erstellt und/oder Fremdschlüssel - es verbindet nur zwei Tabellen in einer gemeinsamen Spalte –
Okay, wäre es ein Inner Join? Wenn Sie einen Primärschlüssel und einen Fremdschlüssel erstellen, würde es außerdem keine separate Tabelle erstellen? – CrashBandicoot