sql >> Database >  >> RDS >> Mysql

Kan iemand MySQL-externe sleutels uitleggen?

Dit is niet automatisch, je moet een buitenlandse sleutelbeperking op de customer_id kolom van de order tafel. Dit kan worden gedaan tijdens het maken van de tabel of met behulp van een ALTER-statement. Raadpleeg de documentatie voor de details. Houd er rekening mee dat, zoals anderen al zeiden, beide tabellen moeten InnoDB-tabellen zijn (buitenlandse sleutelbeperkingen worden niet ondersteund door de MyISAM-opslagengine die ze negeert).

Met of zonder een FK-beperking, zou de vraag zoiets zijn als:

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

Een FK-beperking zou "slechts" garanderen dat de kolom CUSTOMER_ID van de tabel ORDER geen waarden kan bevatten die niet in de tabel CUSTOMER voorkomen (behalve mogelijk NULL) en zo de referentiële integriteit afdwingen.



  1. Ingewikkelde SQL-query - items vinden die overeenkomen met meerdere verschillende externe sleutels

  2. STEL NOCOUNT IN OP gebruik

  3. Kan geen verbinding maken met server - Een netwerkgerelateerde of instantiespecifieke fout

  4. MySQL-database klonen