CREATE TABLE
Saphir
- datenbank
1 Vinzenz Mai0 Saphir
Hallo zusammen,
kann mir jemand sagen wieso folgende MYSQL Anweisung nicht funktioniert?
CREATE TABLE `Teilnehmer`(
`Teilnehmer_ID` INT(100) NOT NULL,
`Vorname` VARCHAR(50) NOT NULL,
`Nachname` VARCHAR(50) NOT NULL,
PRIMARY KEY(Teilnehmer_ID),
INDEX ix_td(Kurs_ID),
INDEX ix_td(Mannschaft_ID),
FOREIGN KEY(Kurs_ID) REFERENCES Kurs(Kurs_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY(Mannschaft_ID) REFERENCES Mannschaft(Mannschaft_ID) ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = InnoDB
Ich bekomme folgende Fehlermeldung.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY(Mannschaft_ID) REFERENCES Mannschaft(Mannschaft_ID) ON DELETE CASCAD' at line 9
Hallo,
kann mir jemand sagen wieso folgende MYSQL Anweisung nicht funktioniert?
CREATE TABLE Teilnehmer
(
Teilnehmer_ID
INT(100) NOT NULL,
Vorname
VARCHAR(50) NOT NULL,
Nachname
VARCHAR(50) NOT NULL,
PRIMARY KEY(Teilnehmer_ID),
INDEX ix_td(Kurs_ID),
INDEX ix_td(Mannschaft_ID),
FOREIGN KEY(Kurs_ID) REFERENCES Kurs(Kurs_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY(Mannschaft_ID) REFERENCES Mannschaft(Mannschaft_ID) ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = InnoDB
- die Spalten mit den Namen
Kurs\_ID
Mannschafts\_ID
fehlen.
- Deswegen kannst Du weder Indexe für die Spalten anlegen noch kannst Du
FOREIGN-KEY-Constraints anlegen
- Du kannst außerdem nicht zwei verschiedene Indexe mit gleichem Namen anlegen
Es bietet sich eventuell ein kombinierter Index an:
INDEX ix\_td(Kurs\_ID, Mannschaft\_ID)
- Die Tabellen Kurs und Mannschaft müssen vor der Tabelle Teilnehmer angelegt
werden.
Freundliche Grüße
Vinzenz
die Spalten mit den Namen
Kurs_ID
Mannschafts_ID
fehlen.Deswegen kannst Du weder Indexe für die Spalten anlegen noch kannst Du
FOREIGN-KEY-Constraints anlegenDu kannst außerdem nicht zwei verschiedene Indexe mit gleichem Namen anlegen
Es bietet sich eventuell ein kombinierter Index an:
INDEX ix_td(Kurs_ID, Mannschaft_ID)Die Tabellen Kurs und Mannschaft müssen vor der Tabelle Teilnehmer angelegt
werden.Freundliche Grüße
Vinzenz
Ach verdammt. Natürlich... ich bin echt blind. Vielen Dank, es klappt jetzt.
Ich hab den Index jetzt einmal ix_td1 und ix_td2 genannt. Gibt es Unterschiede wenn ich einen kombinierten Index benutze?
Oder wieso wird der Index ix_td geschrieben? ( Ich hab das aus einem SQL Script).
So hat es geklappt:
CREATE TABLE `Teilnehmer`(
`Teilnehmer_ID` INT(100) NOT NULL,
`Vorname` VARCHAR(50) NOT NULL,
`Nachname` VARCHAR(50) NOT NULL,
`Kurs_ID` VARCHAR(50) NOT NULL,
`Mannschaft_ID` INT(100) NOT NULL,
PRIMARY KEY(Teilnehmer_ID),
INDEX ix_td1(Kurs_ID),
INDEX ix_td2(Mannschaft_ID),
FOREIGN KEY(Kurs_ID) REFERENCES Kurs(Kurs_ID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(Mannschaft_ID) REFERENCES Mannschaft(Mannschaft_ID) ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = InnoDB