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
etON 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_id
de la tablecontacts
est 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
Laisser un commentaire