SQL MySQL: Datenbank mit Primär- und Fremdschlüssel

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
ich habe in phpmyadmin mit folgendem Befehl eine Tabelle erstellt, PK ist kundennr :

SQL:
CREATE TABLE Kunden (
    kundennr INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    anrede VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
    vorname VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
    email VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL
)

jetzt kommt noch die Tabelle Bestellungen, doch ich erhalte den Fehler wenn ich die Tabelle erstelle :

Eine öffnende Klammer wurde erwartet. (near "Kunden"

So probiere ich die Tabelle zu erstellen :

SQL:
CREATE TABLE Bestellungen (
    bestellnr INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    kundennr INT(10) COLLATE utf8_unicode_ci NOT NULL,
    datum DATE COLLATE utf8_unicode_ci NOT NULL,
    gesamtpreis INT(10) COLLATE utf8_unicode_ci NOT NULL,
    FOREIGN KEY (kundennr) REFERENCES (Kunden)kundennr
)

was ist denn da falsch ? Von w3school habe ich das Beispiel für den FOREIGN KEY als Vorlage genommen : https://www.w3schools.com/sql/sql_foreignkey.asp
 
FOREIGN KEY (kundennr) REFERENCES Kunden (kundennr)

Klammer um die Felder, nicht um die Tabelle.
 
  • Gefällt mir
Reaktionen: RalphS
ah ok,
aber jetzt kommt der Fehler noch :

Kann Tabelle `shop`.`Bestellungen` nicht erzeugen (Fehler: 150 "Foreign key constraint is incorrectly formed")
 
Ich seh da bei w3s kein Fehler.

In Kunden: kundennr INT(10) UNSIGNED
In Bestellungen: kundennr INT(10) COLLATE utf8_unicode_ci

Die Datentypen sind nicht identisch. Ist übrigens interessant, dass du für ein Integer eine Collation und ein Character-Set festlegen willst.
 
Im Zweifel den Fk nachholen.
SQL:
alter table Bestellungen add constraint <Name des constraints > foreign key (kundennr) references kunden(Kundennr);
 
Beschäftige dich nochmal mit den Datentypen, die Felder sind auch arg groß geraten.
 
Zurück
Oben