FOREIGN KEY

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
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:

Code:
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

Top Contributor
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:

* Both tables need to be InnoDB tables.
* To use the syntax FOREIGN KEY(fk_fieldname) REFERENCES table_name (fieldname)
* The field being declared a foreign key needs to be declared as an index in the table definition
http://www.databasejournal.com/features/mysql/article.php/2248101
 

gekkonier

Mitglied
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

Top Contributor
D. h., ich muss statt
Code:
TYPE=MyISAM;
(Wie es jetzt bei mir der Fall ist)

folgendes angeben:
Code:
TYPE = INNODB;
 

Alex_winf01

Top Contributor
Sobald ich den TYPE auf
Code:
TYPE = INNODB;
setze, setzt MySQL den Type automatisch wieder auf

Code:
TYPE=MyISAM;
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben