2011-06-17 4 views
1

Supposons que nous avons 3 le tableau associé de cette manière dans MySQL:modifications de la chaîne dans la base de données relationnelle

 
Table 1:   Table 2:   Table 3: 
------------- -------------  ------------- 
UserID  | ProfileID |  ArticleID | 
------------- -------------  ------------- 
Username | UserID  |  UserID  | 
------------- -------------  ------------- 
Password | UserAvatar |  Article  | 
------------- -------------  ------------- 

J'ai besoin de supprimer tous les documents relatifs à l'action de suppression sur Table1. En d'autres termes, lorsque l'utilisateur exécute une action de suppression sur le tableau 1, les enregistrements associés d'autres tables connexes doivent être supprimés automatiquement et ne pas écrire des tonnes de requêtes pour y parvenir ou nous avons des enregistrements orphelins sans sa fiche.

que dois-je faire? Quelles sont les meilleures pratiques?

Merci.

Répondre

1

Ce que vous voulez est d'effectuer une suppression en cascade. Voici ce que vous devez faire:

  • Créer foreign keys entre les tables en utilisant UserID comme le lien
  • La clé étrangère doit être définie comme ON DELETE CASCADE

Et vous avez terminé.

Mise à jour

Ne va pas vous donner Teh codez. Tout ce que vous devez lire est here. Je ne vais pas te donner le poisson, je t'apprends comment attraper ton propre poisson.

1

Manual? Particulièrement le bit sur ON UPDATE et ON DELETE. Si vous voulez conserver vos tables dans un autre moteur que innodb (qui est le seul à supporter les contraintes FK), alors encapsulez l'accès DML dans les procédures (avec les permissions SECURITY DEFINER et assurez-vous de bloquer la mise à jour directe/SUPPRIMER les privilèges pour l'utilisateur) ou associer triggers

Questions connexes