«Lorsque vous travaillez avec des bases de données Postgresql, vous rencontrerez des cas où vous devez supprimer des enregistrements à partir d'un tableau. Avant d'exécuter une requête de suppression, il est important de s'assurer que la table ne laisse aucune relation incomplète entre les tables.
Dans PostgreSQL, nous pouvons utiliser la fonction Cascade Delete pour y parvenir. Cette fonction permet à une opération de suppression de supprimer les enregistrements spécifiés et toutes les touches étrangères qui les font référence.
En utilisant cet article, nous allons passer en revue comment effectuer une suppression en cascade dans PostgreSQL."
Postgresql Cascade Supprimer
La fonction Cascade Delete est très simple. Il garantit que la suppression de tout dossier de parent supprime également les enregistrements de l'enfant. Pour éviter de supprimer accidentellement les enregistrements d'enfants, vous pouvez définir les contraintes de clé étrangère dans la table parent.
Voyons comment nous pouvons accomplir cela.
Commencez par configurer une exemple de base de données. Dans votre utilitaire PSQL, exécutez la commande:
1 2 3 4 5 6 7 8 | Créer une base de données "Cascade_delete_db;" AVEC Propriétaire = Postgres Codage = 'utf8' Lc_collate = 'c' LC_CTYPE = 'C' Table de table = pg_default Limite de connexion = -1; |
Une fois créé, passez à cette base de données en exécutant la commande:
1 | \ c cascade_delete_db; |
Ensuite, créons la table parent en exécutant la requête:
1 2 3 4 5 6 7 | Créer des utilisateurs de table ( Clé primaire en série ID, Full_name Varchar (100), Email Varchar (255), pays varchar (50), département_foreign_key int not null )); |
Ensuite, nous pouvons créer la table des enfants comme:
1 2 3 4 | Créer le département de table ( Clé primaire en série user_id, Département Varchar (50) )); |
Ensuite, nous devons ajouter une contrainte de clé étrangère à la table parent, comme indiqué dans la commande ci-dessous:
1 2 | Alter Table Users Ajouter une clé étrangère (Department_Foreign_Key) Département des références (user_id) sur Delete Cascade; |
Nous pouvons désormais insérer quelques exemples de données dans les tables comme indiqué:
1 2 3 4 5 6 7 8 | Insérer dans les valeurs du département (département) ('DÉVELOPPEMENT DE JEU'), ('Dev-ops'), ('Backend-dev'); Insérer dans les valeurs des utilisateurs (full_name, e-mail, pays, département_foreign_key) ('Alley K', 'K.ALLEY @ TEST.GG ',' US ', 1), ('Kaspa V', 'V.fantôme @ kaspa.ww ',' Ca ', 2), ('Dev.W ',' w @ dev.io ',' af ', 3); |
Nous pouvons alors interroger les tables comme:
1 | Sélectionner * chez les utilisateurs; |
Cela devrait retourner la table:
De la table du département, nous pouvons courir:
1 | Sélectionner * dans le département; |
Le tableau résultant:
Une fois que toutes les exemples de données sont prêtes, nous pouvons effectuer une suppression en cascade comme indiqué dans la requête ci-dessous:
1 | Supprimer du département où département = «Dev-OPS»; |
Dans l'instruction ci-dessus, nous utilisons la requête de suppression normale pour supprimer un enregistrement où le ministère est égal à «Dev-OPS."Puisque nous définissons la suppression de Cascade, nous pouvons vérifier la table des utilisateurs pour vérifier l'utilisateur avec le département_foreign_key de 2 est supprimé.
1 | Sélectionner * chez les utilisateurs; |
Nous pouvons voir que seuls deux enregistrements sont dans le tableau des utilisateurs malgré le fait que nous supprimons l'enregistrement du tableau des départements.
Félicitations, vous avez appris à effectuer une suppression en cascade dans Postgresql.
Résiliation
Ce tutoriel vous a appris à lier deux tables à l'aide d'une clé étrangère et à définir une fonction de suppression en cascade.
Merci d'avoir lu!!