Contrainte FOREIGN KEY SQL

Contrainte FOREIGN KEY SQL

Une clé étrangère dans une table pointe vers la clé primaire d'une autre table.

Laissez-nous expliquer la clé étrangère par un exemple. Regardez les deux tables suivantes :

Table "Persons":

Id_P LastName FirstName Adresse City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Table "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Veuillez noter que la colonne "Id_P" dans "Orders" pointe vers la colonne "Id_P" dans la table "Persons".

La colonne "Id_P" de la table "Persons" est la clé primaire de la table "Persons".

La colonne "Id_P" de la table "Orders" est une clé étrangère de la table "Orders".

La contrainte FOREIGN KEY est utilisée pour prévenir des actions destructrices entre les tables.

La contrainte FOREIGN KEY peut également empêcher l'insertion de données illicites dans la colonne étrangère, car elle doit être l'une des valeurs de la table vers laquelle elle fait référence.

Contrainte FOREIGN KEY dans la création de la table

Le SQL suivant crée une clé étrangère FOREIGN KEY pour la colonne "Id_P" lors de la création de la table "Orders":

MySQL :

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
Clé étrangère (Id_P) fait référence à (Id_P) dans la table Persons
)

SQL Server / Oracle / MS Access :

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

Si vous devez nommer la contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, utilisez la syntaxe SQL suivante :

MySQL / SQL Server / Oracle / MS Access :

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

Contrainte FOREIGN KEY SQL sur ALTER TABLE

Si vous créez une contrainte FOREIGN KEY pour la colonne "Id_P" dans la table "Orders" déjà existante, utilisez le SQL suivant :

MySQL / SQL Server / Oracle / MS Access :

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

Si vous devez nommer la contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, utilisez la syntaxe SQL suivante :

MySQL / SQL Server / Oracle / MS Access :

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

Annuler la contrainte FOREIGN KEY

Pour annuler la contrainte FOREIGN KEY, utilisez le SQL suivant :

MySQL :

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access :

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders