Bij het testen worden de externe sleutels niet op mijn computer gemaakt met deze syntaxis:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Maar dat zijn ze wel als ik deze aanmaakverklaring gebruik:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Een gemakkelijke manier om te zien of er externe sleutels op een tafel staan, is:
show create table bugs_products
Of u kunt het informatieschema opvragen:
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'
Controleer ook of u de InnoDB-opslagengine gebruikt. De MyISAM-engine ondersteunt geen externe sleutels. Je kunt de motor vinden als:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Als u een externe sleutel op een MyISAM-tabel probeert te maken, worden de verwijzingen in stilte weggegooid en doet het alsof het lukt.