CREATE TABLE person (person_id INT NOT NULL,
PRIMARY KEY (person_id));
CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));
La parola chiave riferimenti viene utilizzato per definire quale tabella e la colonna viene utilizzato in una relazione chiave esterna. Ciò significa che un record nella tabella hobby deve avere un identificativo persona che esiste nella tabella delle persone oppure al momento dell'inserimento si riceverà un errore che la chiave non esiste.
Per rispondere alla domanda sopra riportata su "ON DELETE CASCADE", consente di eliminare un record della chiave madre (di persona) e i record figli corrispondenti (nell'hobby) senza dover prima cancellare tutti i record figli.
Per chiarire, se si dispone di record figli attaccati a una voce chiave primaria e si tenta di eliminare la voce chiave primaria come:
DELETE FROM person where person_id = 1;
senza avere la Elimina da CASCADE, si riceverà un errore se qualsiasi i record nell'hobby avevano 1 persona su 1. Avresti cancellato tutti quei record prima di fare l'eliminazione sopra. Con DELETE ON CASCADE usato, l'eliminazione di cui sopra avrà esito positivo e cancellerà automaticamente tutti i record dalla tabella hobby della tabella collegata alla persona_id che viene eliminata dalla tabella della chiave primaria.
fonte
2010-02-03 14:13:10
Vale la pena notare, un FK in linea ('HobbyID INT REFERENCES Hobbies (ID)') NON funziona. Questo è stato recentemente segnalato come un bug (http://bugs.mysql.com/bug.php?id=4919), quindi sono sicuro che se ne occuperanno presto. –