CREATE TABLE
 Saphir
 Saphir
    
    
      - datenbank
- 1 Vinzenz Mai- 0  Saphir Saphir
 
 nicht angemeldet
 nicht angemeldetHallo 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_IDINT(100) NOT NULL,
VornameVARCHAR(50) NOT NULL,
NachnameVARCHAR(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 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
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