Table of Contents
InnoDB Foreign Keys
Features
- Forces database consistency
- No need to rely on application for referential integrity
Usage
- Primary use is for parent-child table relationships
- Parent-child relationships can exist within the same table
- Column types for both indexes must be exactly the same
- Character set must also be the same for non-binary columns
- InnoDB rejects any creation of records where the constraints do not match
- You can use ALTER TABLE to retroactively apply a foreign key match, but the indexes must be valid
- Use
SHOW CREATE TABLEto display foreign key indexes
Notes
- MyISAM tables will accept the syntax, but not actually do anything
Examples
Parent-child relationship in two tables:
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;