MySQL Creazione di tabelle con chiave esterna


Esempio

CREATE TABLE Account (
    AccountID     INT UNSIGNED NOT NULL,
    AccountNo     INT UNSIGNED NOT NULL,
    PersonID    INT UNSIGNED,
    PRIMARY KEY (AccountID),
    FOREIGN KEY (PersonID) REFERENCES Person (PersonID)
) ENGINE=InnoDB;

Chiave esterna: una chiave esterna ( FK ) è una singola colonna o un composto composto da più colonne di una tabella di riferimento . Questo FK è confermato per esistere nella tabella di riferimento . Si consiglia vivamente che la chiave della tabella di riferimento che conferma l' FK sia una chiave primaria, ma non viene applicata. È usato come ricerca rapida nel riferimento dove non ha bisogno di essere unico, e in effetti può essere l'indice più a sinistra lì.

Le relazioni con le chiavi esterne coinvolgono una tabella padre che contiene i valori dei dati centrali e una tabella figlio con valori identici che risalgono al suo genitore. La clausola FOREIGN KEY è specificata nella tabella figlio. Le tabelle padre e figlio devono utilizzare lo stesso motore di archiviazione. Non devono essere tavoli TEMPORANEA .

Le colonne corrispondenti nella chiave esterna e la chiave di riferimento devono avere tipi di dati simili. La dimensione e il segno dei tipi interi devono essere uguali. La lunghezza dei tipi di stringa non deve essere la stessa. Per le colonne di stringa non binarie (carattere), il set di caratteri e le regole di confronto devono essere uguali.

Nota: i vincoli di chiave esterna sono supportati dal motore di archiviazione InnoDB (non da MyISAM o MEMORY). Le configurazioni DB che utilizzano altri motori accettano questa istruzione CREATE TABLE ma non rispetteranno i vincoli di chiave esterna. (Anche se le versioni più recenti di MySQL sono predefinite in InnoDB , ma è buona prassi essere esplicite.)