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. p>
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. P>
4 Réponses :
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? P>
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.
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 ... P>
Essayez l'une des réponses ici. MySQL: Comment Je trouve toutes les tables qui ont des clés étrangères qui font référence à la table.Column et ont des valeurs pour ces clés étrangères? P>
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;
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é.