# FOREIGN KEY



## Alex_winf01 (20. Jul 2006)

Hallo Forengemeinde

Ich benötige einen FOREIGN KEY und administriere meine MySQL-Datenbank mit phpMyAdmin. Problem:

Wenn ich in der CREATE-Table-Anweisung folgendes setze:


```
CREATE TABLE artikel_optionen
(
    Optionen_Nr INT NOT NULL DEFAULT 1,
    Optionstext CHAR(64),
    FK_Artikel_ID INT NOT NULL,
    FOREIGN KEY(FK_Artikel_ID) REFERENCES artikel (Artikel_ID)
);
```

In diesem Fall wird KEIN Foreign Key gesetzt. Ich kann auch keinen über die ALTER TABLE-Anweisung definieren


----------



## Lim_Dul (20. Jul 2006)

Foreign Keys gehen nicht bei allen Tabellentypen:



> Strictly speaking, for a field to be a foreign key, it needs to be defined as such in the database definition. You can 'define' a foreign key in any MySQL table type (including the default MyISAM table type), but they do not actually do anything - they are only used to enforce referential integrity in InnoDB tables.
> 
> In order to create a foreign key, you need the following:
> 
> ...


http://www.databasejournal.com/features/mysql/article.php/2248101


----------



## gekkonier (20. Jul 2006)

Kuck dir mal an welche verschiedenen Tabellenarten mySQL anbietet. Nicht jede Tabelle unterstützt diesen Mechanismus.

Hier solltest Du die notwendigen Informationen finden:
http://dev.mysql.com/doc/refman/5.1/de/storage-engines.html


----------



## gekkonier (20. Jul 2006)

Du kannst die Table auch ALTERN und die ENGINE dabei angeben die  verwendet wird. So kannst Du falls du schon Daten in der Tabelle hast den Typ ändern.


----------



## Alex_winf01 (20. Jul 2006)

D. h., ich muss statt  
	
	
	
	





```
TYPE=MyISAM;
```
 (Wie es jetzt bei mir der Fall ist)

folgendes angeben:

```
TYPE = INNODB;
```


----------



## Alex_winf01 (20. Jul 2006)

Sobald ich den TYPE auf 
	
	
	
	





```
TYPE = INNODB;
```
 setze, setzt MySQL den Type automatisch wieder auf


```
TYPE=MyISAM;
```


----------

