Mysql
 sql >> Database >  >> RDS >> Mysql

Qualcuno può spiegare le chiavi esterne di MySQL

Questo non è automatico, devi aggiungere un vincolo di chiave esterna nel customer_id colonna dell'order tavolo. Questo può essere fatto al momento della creazione della tabella o usando un'istruzione ALTER. Controllare la documentazione per i dettagli. Come altri hanno sottolineato, tieni presente che entrambe le tabelle devono essere tabelle InnoDB (i vincoli delle chiavi esterne non sono supportati dal motore di archiviazione MyISAM che li ignorerà).

Con o senza un vincolo FK, la query sarebbe qualcosa del tipo:

SELECT * 
FROM CUSTOMER C, ORDER O
WHERE C.ID = O.CUSTOMER_ID
AND O.ID = ...

Un vincolo FK garantirebbe "solo" che la colonna CUSTOMER_ID della tabella ORDER non possa contenere valori che non esistono nella tabella CUSTOMER (tranne potenzialmente NULL) e quindi imporre l'integrità referenziale.