Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann jemand MySQL-Fremdschlüssel erklären

Dies geschieht nicht automatisch, Sie müssen einen Fremdschlüsselbeschränkung auf der customer_id Spalte der order Tisch. Dies kann zum Zeitpunkt der Tabellenerstellung oder mithilfe einer ALTER-Anweisung erfolgen. Einzelheiten finden Sie in der Dokumentation. Beachten Sie, wie andere bereits angemerkt haben, dass beide Tabellen müssen InnoDB-Tabellen sein (Fremdschlüsselbeschränkungen werden von der MyISAM-Speicher-Engine nicht unterstützt, die sie ignoriert).

Mit oder ohne FK-Einschränkung würde die Abfrage etwa so aussehen:

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

Eine FK-Einschränkung würde "nur" garantieren, dass die Spalte CUSTOMER_ID der Tabelle ORDER keine Werte enthalten kann, die in der Tabelle CUSTOMER nicht vorhanden sind (außer möglicherweise NULL), und somit die referenzielle Integrität erzwingen.