Création d'une clef étrangère avec PgAdmin
Il est possible de définir une clef étrangère (importation d'une clef primaire d'une autre table).
Lorsque les données des colonnes référencées sont modifiées, des actions sont réalisées sur les données de la table référençant :
La clause
ON DELETE
(ongletaction → lors d'une suppression
) spécifie l'action à réaliser lorsqu'une ligne référencée de la table de référence est supprimée.De la même façon, la clause
ON UPDATE
(lors d'une mise à jour) spécifie l'action à réaliser lorsqu'une colonne référencée est mise à jour.Si la ligne est mise à jour sans que la valeur de la colonne référencée ne soit modifiée, aucune action n'est réalisée.
Les actions suivantes sont possibles pour chaque clause (voir CREATE TABLE) :
| Une erreur est produite pour indiquer que la suppression ou la mise à jour entraîne une violation de la contrainte de clé étrangère. C'est le comportement par défaut. |
| Une erreur est produite pour indiquer que la suppression ou la mise à jour entraîne une violation de la contrainte de clé étrangère. Ce comportement est identique à NO ACTION, si ce n'est que la vérification n'est pas décalable dans le temps. |
| La mise à jour ou la suppression de la ligne de référence est propagée à l'ensemble des lignes qui la référencent, qui sont, respectivement, mises à jour ou supprimées. |
| La valeur de la colonne qui référence est positionnée à NULL. |
| La valeur de la colonne qui référence est positionnée à celle par défaut. |
Si les colonnes référencées sont modifiées fréquemment, il est conseillé d'ajouter un index sur la colonne de clé étrangère de façon à accélérer les actions référentielles associées à la colonne de clé étrangère.
Complément : Convention de nommage
Il est bon d'adopter une convention de nommage, par exemple :
clef primaire : pk_nom_champ_nom_de_la_table (pk pour primary key), la clef primaire est souvent un champ nommé id.
clef étrangère : fk_nom_champ_nom_table (fk pour foreign key)