Erstellen von Fremdschlüsseln

kbit

Erfahrenes Mitglied
Hi, ich hab meine Tabellen mit phpmyadmin erstellt. Wie kann ich dort einen Fremdschlüssel erstellen, ausser ihn per hand selber zu erstellen ?
Ich hatte gelesen das wenn man den Tabellentyp auf InnoDB stellt dies wohl gehen sollte. Frage ist wie kann ich dies einstellen oder geht das unter phpmyadmin gar nicht ?
 
Automatisch schon mal gar nicht. Für Fremdschlüssel muss die Tabellen InnoDB sein das kann man in der Tabelle unter Optionen einstellen.

Ein Weg automatisch Fremdschlüssel anzulegen ist hibernate in java allerdings ist deine Frage zu unspezifisch um mehr Auskünfte zu geben.

gruß

kato
 
Hi, ich hab gerade mal nachgeschaut unter phpmyadmin. Wo soll der Punkt denn stehen für InnoDB. Ich kann dort nur unter Tabellenformat MyISAM , Memory usw einstellen aber kein InnoDB.
 
na dann ist es entweder nicht angeschaltet oder deine MySQL - Version unterstützt kein InnoDB in der conf von Mysql kann man zumindestens ersteres einschalten

gruß

kato
 
Hallo,

ein Fremdschlüssel ist ja der Primärschlüssel einer anderen Tabelle. Soweit ich weiß, muss man den immer selbst eintragen. Aber man kann keinen Fremdschlüssel erstellen lassen. Das einzige was generiert werden kann, ist der PrimäryKey.

MFG

Sascha
 
um etwas präziser zu werden

Code:
                      FOREIGN KEY (customer_id)
                        REFERENCES customer(id)) ENGINE=INNODB;

mit dieser klausel wird ein Fremdschlüssel für das feld customer_id erzeigt der auf das feld id in der tabelle customer verweist, damit werden in customer_id nur noch werte zugelassen, die in customer.id existieren. alle anderen werte erzeugen einen fehler.

Einträge von Werten erfolgen natürlich dann manuell.

@sascha

der Primärschlüssel wird mitnichten automatisch generiert er ist nur eine Feldeinschränkung a la NOT NULL und UNIQUE sowie eines Indexes. In MySQL ist für generische Werte autoincrement zuständig.

gruß

kato
 
Das meinte ich doch. Wenn man dann null einträgt, wird automatisch der PrimaryKey eingetragen.

MFG

Sascha
 
Zurück