résumé: dans ce tutoriel, vous apprendrez à propos de la clé étrangère PostgreSQL et comment ajouter des clés étrangères aux tables en utilisant des contraintes de clé étrangère.

Introduction à PostgreSQL Contrainte de Clé Étrangère

Une clé étrangère est une colonne ou un groupe de colonnes dans une table qui référence la clé primaire d’une autre table.

la table qui contient la clé étrangère est appelée table de référencement ou table enfant. Et la table référencée par la clé étrangère est appelée table référencée ou table parent.,

une table peut avoir plusieurs clés étrangères en fonction de ses relations avec d’autres tables.

dans PostgreSQL, vous définissez une clé étrangère en utilisant la contrainte de clé étrangère. La contrainte de clé étrangère aide à maintenir l’intégrité référentielle des données entre les tables enfant et parent.

Une contrainte de clé étrangère indique que les valeurs dans une colonne ou un groupe de colonnes dans la table enfant à l’égalité des valeurs dans une colonne ou un groupe de colonnes de la table parent.,

syntaxe de contrainte de clé étrangère PostgreSQL

ce qui suit illustre une syntaxe de contrainte de clé étrangère:

dans cette syntaxe:

  • tout d’abord, spécifiez le nom de la contrainte de clé étrangère après le mot-cléCONSTRAINT. La clauseCONSTRAINT est facultative. Si vous l’omettez, PostgreSQL attribuera un nom généré automatiquement.
  • deuxièmement, spécifiez une ou plusieurs colonnes de clés étrangères entre parenthèses après les mots-clés FOREIGN KEY.,
  • Troisièmement, spécifiez la table parente et les colonnes de clé parente référencées par les colonnes de clé étrangère dans la clause .
  • Enfin, spécifiez le supprimer et mettre à jour les actions dans le ON DELETE et ON UPDATE clauses.

Les actions delete et update déterminent les comportements lorsque la clé primaire de la table parent est supprimée et mise à jour. Étant donné que la clé primaire est rarement mise à jour, le ON UPDATE action n’est pas souvent utilisé dans la pratique. Nous allons nous concentrer sur l’actionON DELETE.,

PostgreSQL supporte les actions suivantes:

  • SET NULL
  • par DÉFAUT
  • RESTREINDRE
  • AUCUNE ACTION
  • CASCADE

PostgreSQL contrainte de clé étrangère exemples

Les déclarations de créer la balise customers et contacts tables:

Dans cet exemple, la balise customers table est la table parent et le contacts table est la table enfant.

Chaque client a zéro ou plusieurs contacts et chaque contact appartient à zéro ou à un client.,

la colonnecustomer_idde la tablecontactsest la colonne de clé étrangère qui fait référence à la colonne de clé primaire portant le même nom dans la tablecustomers.

voici contrainte de clé étrangère fk_customer dans le contacts table définit la balise customer_id comme la clé étrangère:

en Raison de la contrainte de clé étrangère n’a pas le ON DELETE et ON UPDATE action par défaut est NO ACTION.,

aucune ACTION

ce qui suit insère des données dans les tables customers Et contacts:

l’instruction suivante supprime l’ID client 1 de la table customers:

Code language: SQL (Structured Query Language) (sql)

en raison de l’id

, PostgreSQL émet une violation de contrainte car les lignes de référencement de l’ID client 1 existent toujours dans la tablecontacts:

l’action RESTRICT est similaire pour le NO ACTION., La différence ne se produit lorsque vous définissez la contrainte de clé étrangère DEFERRABLE avec un INITIALLY DEFERRED ou INITIALLY IMMEDIATE mode. Nous en discuterons plus à ce sujet dans le tutoriel suivant.

SET NULL

Le SET NULL définit automatiquement NULL pour les colonnes de clé étrangère dans le référencement des lignes de la table enfant lorsque les lignes référencées dans la table parent sont supprimés.,

les instructions suivantes déposent les exemples de tables et les recréent avec la clé étrangère qui utilise l’action SET NULL dans la clause ON DELETE:

les instructions suivantes insèrent des données dans les customers Et contacts tables:

pour voir comment fonctionne le SET NULL, supprimons le client avec l’id 1 de la customers table:

Code language: SQL (Structured Query Language) (sql)

à cause du ON DELETE SET NULL action, les lignes de référencement dans la table contacts sont définies sur null., L’instruction suivante affiche les données dans la contacts table:

Comme on peut le voir clairement à partir de la sortie, les lignes qui ont le customer_id 1 ont maintenant le customer_id ensembles de NULL

CASCADE

Le ON DELETE CASCADE supprime automatiquement toutes les références des lignes dans la table enfant lorsque les lignes référencées dans la table parent sont supprimés., En pratique, ON DELETE CASCADE est l’option la plus couramment utilisée.

les instructions suivantes recréent les exemples de tables.,iv> les modifications apportées à CASCADE:

L’instruction suivante supprime l’id de client 1:

en Raison de la balise ON DELETE CASCADE action, tous le référencement lignes dans le contacts table sont automatiquement supprimés:

par DÉFAUT

Le ON DELETE SET DEFAULT définit la valeur par défaut de la colonne de clé étrangère de référencement de lignes dans la table enfant lorsque les lignes référencées à partir de la table parent sont supprimés.,nt à une table existante

pour ajouter une contrainte de clé étrangère à la table existante, vous utilisez la forme suivante de L’instruction ALTER TABLE:

lorsque vous ajoutez une contrainte de clé étrangère avec l’option ON DELETE CASCADE à une table existante, vous devez suivre ces étapes:

Tout d’abord,

tout d’abord, ajoutez une nouvelle contrainte de clé étrangère avec ON DELETE CASCADE action:

dans ce tutoriel, vous avez appris sur les clés étrangères PostgreSQL et comment utiliser la contrainte de clé étrangère pour créer des clés étrangères pour une table.,

  • ce tutoriel a Été utile ?
  • Ouinon