11
votes

Vérifiez si une ligne pourrait être supprimée dans MySQL

Y a-t-il une façon de vérifier si une ligne pourrait être supprimée? Que ce soit par exemple n'est pas connecté actuellement à travers des clés étrangères restreintes à rien d'autre.

Raison: je fais une page d'administration avec tous les utilisateurs du système répertoriées. Ils peuvent toujours être désactivés, mais ils peuvent également être supprimés. Cependant, ils ne peuvent être supprimés que si elles ne sont pas connectées à rien de critique. Et je voudrais ne pas avoir à vérifier que manuellement si cela peut être fait facilement dans la base de données.

Remarque: Je ne veux pas réellement supprimer aucun utilisateur. Je veux juste afficher à l'administrateur qu'un utilisateur pourrait être supprimé.


3 commentaires

Essayez de le supprimer. Si la DB se plaint, ce n'était pas possible. ;)


Vous pouvez toujours supprimer l'administrateur en supprimant d'abord les éléments connectés, puis supprimant l'administrateur.


Euh, oui, mais il sera donc déjà supprimé, ce qui pourrait ou pourrait ne pas être ce que l'administrateur souhaitait: P Je veux juste afficher s'il s'agit d'une possibilité.


4 Réponses :


4
votes

Vous pouvez essayer de la supprimer dans le cadre d'une transaction, puis réduisez la transaction si elle réussit. Mais, je suppose que la question suivante immédiate est, pourquoi ne saurais-tu pas en premier lieu si vous pouviez supprimer la ligne ou non?


4 commentaires

Parce qu'il pourrait avoir diverses restrictions attachées à celle-ci à travers les clés étrangères et que j'aimerais ne pas avoir à vérifier manuellement tous ceux parce qu'ils pouvaient potentiellement changer si j'ai ajouté ou supprimé une table plus tard.


Vous avez une défaillance de la logique d'entreprise alors. Ce type de vérification doit être effectué dans votre couche d'entreprise, qui effectuerait les requêtes nécessaires pour que l'utilisateur n'était pas connecté à rien.


L'intégrité des données de pensée et les chèques comme c'était quelles restrictions de clé étrangère devaient?


Si certains gars construisent un gestionnaire de base de données (comme phpmyadmin) où les utilisateurs peuvent créer leurs propres tables et leurs tables étrangères (et leurs propres échecs logiques), il pourrait obtenir ce problème, pour que ces personnes construisent quelque chose comme ça que cette réponse pourrait être utile.



1
votes

Vous pouvez utiliser une vue pour résumer le nombre de dépendances sans avoir à vous soucier de stocker les données et de le garder à jour. Lorsque le nombre de dépendances est zéro, faites l'option DELETE disponible dans l'interface utilisateur ...


0 commentaires


1
votes

Vous pouvez obtenir toutes les lignes orphelines à gauche reliant la table qu'ils sont connectées à, par ex. Cela vous donnera tous les identifiants de l'utilisateur qui n'ont pas d'emploi.

SELECT u.id FROM users u LEFT JOIN jobs j on u.id=j.user_id WHERE j.user_id is null;


0 commentaires