CLÉ ÉTRANGÈRE SQL
Contrainte SQL FOREIGN KEY
UNE CLÉ ÉTRANGÈRE dans une table pointe vers une CLÉ PRIMAIRE dans une autre table.
Expliquons les clés étrangères à travers un exemple. Veuillez consulter les deux tableaux suivants :
Tableau « Personnes » :
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
Tableau « Commandes » :
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Notez que la colonne "P_Id" du tableau "Commandes" pointe vers la colonne "P_Id" du tableau "Personnes".
La colonne "P_Id" dans la table "Personnes" est la CLÉ PRIMAIRE dans la table "Personnes".
La colonne "P_Id" dans la table "Commandes" est la CLÉ ÉTRANGÈRE dans la table "Commandes".
Les contraintes FOREIGN KEY sont utilisées pour empêcher un comportement qui rompt les jointures entre les tables.
La contrainte FOREIGN KEY empêche également l'insertion de données illégales dans une colonne de clé étrangère car elle doit être l'une des valeurs de la table vers laquelle elle pointe.
Contrainte SQL FOREIGN KEY lors de CREATE TABLE
Le SQL suivant crée une contrainte FOREIGN KEY sur la colonne "P_Id" lors de la création de la table "Commandes" :
MySQL :
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
CLÉ PRIMAIRE (O_Id),
CLÉ ÉTRANGÈRE (P_Id) RÉFÉRENCES Personnes(P_Id)
)
SQL Server/Oracle/MS Access :
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Pour nommer une contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :
MySQL / SQL Server / Oracle / MS Access :
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONTRAINTE fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
Contrainte SQL FOREIGN KEY lorsque ALTER TABLE
quand" Commandes" table a été créée, si vous devez créer une contrainte FOREIGN KEY sur la colonne "P_Id", merci d'utiliser le SQL suivant :
MySQL / SQL Server / Oracle / MS Access :
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Si vous devez nommer la contrainte FOREIGN KEY et définir FOREIGN pour Contraintes CLÉS de plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :
MySQL / SQL Server / Oracle / MS Access :
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Révoquer la contrainte FOREIGN KEY
Pour révoquer la contrainte FOREIGN KEY, veuillez utilisez SQL ci-dessous :
MySQL :
DROP FOREIGN KEY fk_PerOrders
SQL Serveur/Oracle/MS Access :
DROP CONSTRAINT fk_PerOrders