Sì, una chiave esterna è un tipo di vincolo. MySQL ha un supporto non uniforme per i vincoli:
PRIMARY KEY
:sì come vincolo di tabella e vincolo di colonna.FOREIGN KEY
:si come vincolo di tabella, ma solo con motori di archiviazione InnoDB e BDB; altrimenti analizzato ma ignorato.CHECK
:analizzato ma ignorato in tutti i motori di archiviazione.UNIQUE
:sì come vincolo di tabella e vincolo di colonna.NOT NULL
:sì come vincolo di colonna.DEFERRABLE
e altri attributi di vincolo:nessun supporto.
Il CONSTRAINT
La clausola consente di nominare il vincolo in modo esplicito, per rendere più leggibili i metadati oppure per utilizzare il nome quando si desidera eliminare il vincolo. Lo standard SQL richiede che il CONSTRAINT
la clausola è facoltativa. Se lo ometti, l'RDBMS crea automaticamente un nome e il nome dipende dall'implementazione.