version 11
CONSTRAINT nom_sql
FOREIGN KEY (ref_colonne, ... , ref_colonne)
REFERENCES nom_sql [(ref_colonne, ... , ref_colonne)]
[ON DELETE {RESTRICT |CASCADE}]
[ON UPDATE {RESTRICT |CASCADE}]
Description
Une définition de clé étrangère (définition_clé_étrangère) permet de faire correspondre les champs clés primaires (ref_colonne) définis dans une autre table afin de préserver l'intégrité des données. La contrainte FOREIGN KEY permet de passer la ou les référence(s) des colonne(s) (ref_colonne) à définir comme clés étrangères (correspondant aux clés primaires d'une autre table).
La clause CONSTRAINT nom_sql permet de nommer la contrainte FOREIGN KEY.
La clause REFERENCES permet de spécifier les champs clés primaires source correspondants dans l'autre table (désignée par nom_sql). Vous pouvez omettre la liste des champs (arguments ref_colonne) si la table nom_sql définie dans la clause REFERENCES a une clé primaire qui doit être utilisée comme correspondance pour la contrainte clé étrangère.
La clause facultative ON DELETE CASCADE spécifie que lorsqu'un enregistrement (row) est supprimé de la table parente (contenant les champs clés primaires), les enregistrements associés dans la table enfant (contenant les champs clés étrangers) doivent également être supprimés. Passer la clause facultative ON DELETE RESTRICT empêche la suppression des données d'une table si d'autres tables les référencent.
La clause facultative ON UPDATE CASCADE spécifie qu'à chaque fois qu'un enregistrement (row) est mis à jour dans la table parente (contenant les champs clés primaires), il est également mis à jour dans tous les enregistrements associés dans la table enfant (contenant les champs clés étrangers). Passer la clause facultative ON UPDATE RESTRICT empêche la mise à jour des données d'une table si d'autres tables les référencent.
A noter que si les deux clauses ON DELETE et ON UPDATE sont passées, elles doivent être du même type (c'est-à-dire ON DELETE CASCADE et ON UPDATE CASCADE, ou ON DELETE RESTRICT et ON UPDATE RESTRICT).
Si ni la clause ON DELETE ni ON UPDATE n'est passée, CASCADE est utilisée comme règle par défaut.
Exemple
Cet exemple crée la table COMMANDES puis définit la colonne SID_Clients comme clé étrangère, associée à la colonne SID de la table CLIENTS.
CREATE TABLE COMMANDES (ID_Commande INT32, SID_Clients INT32, LeTotal NUMERIC, PRIMARY KEY (ID_Commande), FOREIGN KEY (SID_Clients) REFERENCES CLIENTS(SID));
Référence
ALTER TABLE, définition_clé_primaire, ref_colonne.