Ved test oprettes fremmednøglerne ikke på min maskine ved hjælp af denne syntaks:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Men det er de, når jeg bruger denne oprettelseserklæring:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
En nem måde at se, om der findes fremmednøgler på en tabel, er:
show create table bugs_products
Eller du kan forespørge informationsskemaet:
select
table_schema
, table_name
, column_name
, referenced_table_schema
, referenced_table_name
, referenced_column_name
from information_schema.KEY_COLUMN_USAGE
where table_name = 'bugs'
Tjek også, at du bruger InnoDB-lagringsmotoren. MyISAM-motoren understøtter ikke fremmednøgler. Du kan finde motoren som:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Hvis du forsøger at oprette en fremmednøgle på en MyISAM-tabel, vil den lydløst kassere referencerne og foregive at lykkes.