2010-04-26 3 views
1

Je travaille avec un système de gestion de contenu, et les utilisateurs sont invités avec un écran de confirmation avant de supprimer des enregistrements. Certains enregistrements sont des clés étrangères référencées dans d'autres tables et ne peuvent donc pas être supprimées.Comment vérifier les références de clés étrangères avant de les supprimer dans MySQL?

Je souhaite afficher un message à côté d'un enregistrement donné s'il contient des références de clé étrangère. Pour savoir si je devrais afficher le message pour un enregistrement, je pourrais simplement interroger la table de référence et voir s'il y a des références. Mais le problème est, il y a environ une douzaine de tables avec des enregistrements référençant potentiellement cet enregistrement, et une recherche pourrait prendre un "long" temps.

Existe-t-il un moyen facile de dire si l'enregistrement est prêt pour la suppression (c'est-à-dire n'a pas de références de clé étrangère)?

Répondre

2

Si vous utilisez DB Engine qui prend en charge la transaction, alors je pense que la meilleure façon sans vérifier toutes les tables qui pourraient avoir une référence à un enregistrement supprimé est:

  1. Démarrer une nouvelle transaction
  2. Essayez de supprimer l'enregistrement demandé
  3. Si l'enregistrement a été supprimé, il peut être supprimé. Si une erreur se produit, elle ne peut pas être supprimée et vous pouvez afficher un message à l'utilisateur.
  4. Rollback la transaction
+0

Ouais, c'est ce que je pensais aussi. Hmm. –

Questions connexes