[MySQL] FOREIGN KEY
Orang
- datenbank
0 Sven Rautenberg0 Orang
0 dedlfix0 Orang
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
Moin!
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.
Welche MySQL-Version?
- Sven Rautenberg
Welche MySQL-Version?
Server 5.0.20
echo $begrüßung;
ERROR 1005 (HY000): Can't create table '.\its_supportdb#sql-254_8.frm' (errno: 150)
Als ich das Problem versuchte nachzustellen ist kein Fehler aufgetreten. Gibt es vielleicht ein Rechteproblem?
echo "$verabschiedung $name";
Als ich das Problem versuchte nachzustellen ist kein Fehler aufgetreten. Gibt es vielleicht ein Rechteproblem?
Im Netz habe ich folgendes gefunden:
"Die Fehlermeldung besagt, dass MySQL keine temporäre Datei für das Ergebnis in dem angegebenen Verzeichnis anlegen konnte. Die Lösung: Starten Sie mysqld mit --tmpdir=path, oder fügen Sie dies zu Ihrer Optionsdatei:
[mysqld]
tmpdir=C:/temp
Es gibt einige wahrscheinliche Gründe für Fehler beim Erstellen von Fremdschlüsseln oder Tabellen in einer MySQL-Datenbank. Diese Probleme liegen bei MySQL selbst.
Beispiele:
1. Wenn die zwei Felder (Feldname und fremder Feldname) inkompatible Feldtypen benutzen, gibt MySQL die Fehlermeldung aus.
2. Wenn Sie "On Delete Set Null" benutzen, das Feld aber keine Null erlaubt, gibt MySQL die Fehlermeldung aus."
Ich werde das nochmal überprüfen aber richtig zuversichtlich stimmt mich das nicht :).
Gruß,
Stefan