Maison > base de données > tutoriel mysql > le corps du texte

Comment supprimer correctement les enregistrements d'une table dépendante après la suppression de la table principale dans MySQL ?

Susan Sarandon
Libérer: 2024-11-03 08:18:02
original
838 Les gens l'ont consulté

How to Correctly Delete Records from a Dependent Table After Deleting from the Main Table in MySQL?

Déclencheur MySQL : supprimer les enregistrements de la table dépendante après suppression dans la table principale

Dans un schéma de base de données, il est courant d'avoir plusieurs tables avec relations entre eux. Lorsque des enregistrements sont manipulés dans la table principale, il peut être nécessaire d'effectuer également les actions correspondantes sur les tables dépendantes. Les déclencheurs MySQL offrent un moyen pratique d'automatiser de telles opérations.

Considérons un scénario dans lequel une table appelée patrons stocke des informations sur les individus et une table associée appelée patron_info contient des détails supplémentaires pour chaque usager. Lorsqu'un usager est supprimé de la table des usagers, il est souhaitable de supprimer également ses informations correspondantes de la table patron_info.

Pour y parvenir, un déclencheur DELETE peut être utilisé. Cependant, une erreur de syntaxe a été rencontrée lors de la tentative de création du déclencheur à l'aide du code :

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
    WHERE patron_info.pid = patrons.id
END
Copier après la connexion

L'erreur (1046 : Vérifiez la syntaxe près de END à la ligne 6) indique un problème avec la syntaxe du code du déclencheur. Après un examen plus approfondi, il apparaît que la syntaxe old.id doit être utilisée à la place de patrons.id dans l'instruction DELETE pour référencer correctement l'ID du client supprimé.

Le code de déclenchement corrigé est le suivant :

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
    WHERE patron_info.pid = old.id;
END
Copier après la connexion

Il est important de noter que l'utilisation de délimiteurs (tels que $ ou //) peut être nécessaire lors de la saisie du code de déclenchement dans une fenêtre de console pour gérer des caractères spécifiques dans le code. De plus, n'oubliez pas d'inclure un point-virgule à la fin de l'instruction DELETE.

En suivant ces directives, le déclencheur supprimera avec succès les enregistrements de la table patron_info chaque fois qu'un enregistrement est supprimé de la table patrons, garantissant ainsi que les données cohérence et intégrité au sein de la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!