Orang: [MySQL] FOREIGN KEY

Beitrag lesen

Hallo,

Ich habe eine Tabelle call und eine Tabelle call_beitrag. Beide will ich über die Zwischentabelle rel_call_beitrag_call "verbinden". Die dafür relevanten Felder in den Tabellen sind:

call -> id
call_beitrag -> id

rel_call_beitrag_call hat die zwei Felder callID und call_beitragID.

Ich möchte nun Foreign-Key-Regeln definieren, damit beim Löschen eines Datensatzes aus Tabelle call auch alle dazu gehörenden Datensätze aus Tabelle call_beitrag gelöscht werden.

Probiert habe ich das mit MySQL-Administrator 1.1.9. Der will dann folgendes Kommando ausführen:

ALTER TABLE its\_supportdb.rel\_call\_beitrag\_call ADD CONSTRAINT FK\_rel\_call\_beitrag\_call\_1 FOREIGN KEY FK\_rel\_call\_beitrag\_call\_1 (callID)
    REFERENCES call (id)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;

Obwohl die Engine der Tabelle InnoDB ist, bekomme ich diesen Fehler

ERROR 1005 (HY000): Can't create table '.\its_supportdb#sql-254_8.frm' (errno: 150)

Ich schreibe "Obwohl", weil, wenn ich die Engine auf MyISAM ändere, das Einfügen klappt. Aber MyISAm unterstützt doch gar nicht referenzielle Integrität.

Meine Versuche, die Tabelle über den MySQL-Prompt mit dem obigen Befehl zu ändern, schlägt auch fehl. Auch bei Beispielen aus Büchern stehe ich anscheinend auf dem Schlauch.

Wie ist die richtige Syntax?

Es wäre schön wenn ihr mir helfen könnt.

Stefan