Derniers tutoriels de développement web
 

SQL Constraint FOREIGN KEY


SQL FOREIGN KEY Constraint

Une clé étrangère dans un des points de table à une clé primaire dans une autre table.

Illustrons la clé étrangère avec un exemple. Regardez les deux tableaux suivants:

Le "Persons" tableau:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Le "Orders" tableau:

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Notez que le "P_Id" colonne dans les "Orders" points de table à la "P_Id" colonne dans le "Persons" table.

Le "P_Id" colonne dans le "Persons" table est la clé primaire dans la "Persons" table.

Le "P_Id" colonne dans le "Orders" table est une clé étrangère dans la "Orders" table.

La contrainte FOREIGN KEY est utilisé pour prévenir les actions qui détruiraient les liens entre les tables.

La contrainte FOREIGN KEY empêche également des données non valides d'être insérée dans la colonne de clé étrangère, car elle doit être l'une des valeurs contenues dans le tableau il pointe.


SQL FOREIGN KEY Constraint sur CREATE TABLE

Le SQL suivante crée une clé étrangère sur la "P_Id" colonne lorsque le "Orders" table est créée:

MySQL:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

Pour permettre nommage d'une contrainte FOREIGN KEY, et pour définir une contrainte FOREIGN KEY sur plusieurs colonnes, utilisez la syntaxe SQL suivante:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

SQL FOREIGN KEY Constraint sur ALTER TABLE

Pour créer une contrainte FOREIGN KEY sur la "P_Id" colonne lorsque le "Orders" table est déjà créé, utilisez l'instruction SQL suivante:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Pour permettre nommage d'une contrainte FOREIGN KEY, et pour définir une contrainte FOREIGN KEY sur plusieurs colonnes, utilisez la syntaxe SQL suivante:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Pour supprimer une contrainte FOREIGN KEY

Pour supprimer une contrainte FOREIGN KEY, utilisez l'instruction SQL suivante:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders