# Erstellen von Fremdschlüsseln



## kbit (1. April 2008)

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 ?


----------



## katosan (1. April 2008)

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


----------



## kbit (1. April 2008)

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.


----------



## katosan (1. April 2008)

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


----------



## zerix (1. April 2008)

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


----------



## katosan (1. April 2008)

um etwas präziser zu werden 


```
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


----------



## zerix (1. April 2008)

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

MFG

Sascha


----------

