Comment supprimer toutes les lignes dépendantes
J'ai une table Un qui a colonne de clé primaire un et il est forigen clé B tableau(tableau B a clé primaire b et à la colonne a).Tableau B a aussi une clé primaire b qui forigen la clé de la table C et ainsi de suite.
Maintenant, si je veux supprimer une ligne dans Une Table, puis il l'habitude de me permettre parce que son dépendante de la table B, et le tableau B est dépendante sur le Tableau C. j'ai Donc pour supprimer une ligne de C d'abord, puis B et enfin Un manuellement
Si quelqu'un peut me dire si il existe un moyen de supprimer directement sans passer à chaque table et vérifier s'il y a des dépendances ou pas et puis en supprimant
Avez-vous envisagé de
stackoverflow.com/questions/6260688/...
Je sais que jusqu'à la Table c est lié et je ne sais pas ce que les autres tables sont liées à c et ainsi de suite
Vérifier ma réponse. J'ai posté un script pour identifier les dépendances
double possible de Comment faire pour supprimer des lignes dans les tables qui contiennent les clés étrangères vers d'autres tables
cascade delete
?stackoverflow.com/questions/6260688/...
Je sais que jusqu'à la Table c est lié et je ne sais pas ce que les autres tables sont liées à c et ainsi de suite
Vérifier ma réponse. J'ai posté un script pour identifier les dépendances
double possible de Comment faire pour supprimer des lignes dans les tables qui contiennent les clés étrangères vers d'autres tables
OriginalL'auteur SpringLearner | 2015-02-04
Vous devez vous connecter pour publier un commentaire.
Vous Pouvez Utiliser Cascade
Cascading Referential Integrity Constraints
Mise à jour:
vous devez activer la Cascade de Contraintes d'Intégrité Référentielle de la Table A (PK) à partir de la Table B, où ID est la Clé étrangère et, de même, PK du Tableau B Tableau C Où ID est la Clé étrangère
MSDN LIBRARY
le CODE PROJET ARTICALE
Très Bel Article BLOG.SQL AUTORITÉ
J'ai mis à jour ma réponse et a ajouté de l'instantané, il peut vous aider un peu plus
OriginalL'auteur Khurram Ali
Si vous n'êtes pas autorisé à modifier les tables, vous pouvez prendre un coup d'oeil à la
EXISTS
opérateur.Il vous permettra de supprimer des lignes d'une table uniquement si la requête à l'intérieur de la
EXISTS
de revenir au moins 1 résultat. Vous pouvez l'utiliser pour vérifier les dépendances.Vous pouvez écrire 3 requêtes:
Le premier prendra soin de consigner dans
C
que les références des enregistrements dansB
que les références des enregistrements dansA
que vous souhaitez supprimer.Ensuite, vous pouvez supprimer des enregistrements à partir de
B
puisqu'il n'est pas plus dépendances dansC
.Enfin, vous êtes en mesure de supprimer des enregistrements d'
A
à l'aide de la même logique.OriginalL'auteur DeadlyJesus
Le terme que vous cherchez est "cascade" - vous besoin suppressions en cascade. Vous pouvez les activer, comme expliqué ici: Comment puis-je utiliser effacer en cascade avec SQL Server?
Merci pour le lien,+1
OriginalL'auteur zmbq
Vous pouvez utiliser d'intégrité référentielle en cascade, voir ce question. Cependant, méfiez-vous, trop de cascade RI et vous pouvez faire beaucoup de dégâts sans s'en rendre compte!
OriginalL'auteur Rhys Jones
Automatique suppressions dépendent de la façon dont vous avez défini les relations entre les tables.
Si vous obtenez une erreur lorsque vous essayez de supprimer une ligne dans une table de maître, c'est parce que vous n'avez pas spécifié une action spéciale dans les relations pour la suppression.
Ce que je veux dire, c'est la modification de la
ON DELETE
etON UPDATE
options de la FK. Cela permet de spécifier ce qui se passe avec l'enfant des lignes lorsque vous supprimez ou mettez à jour la ligne dans la table principale. Par exemple, leON DELETE CASCADE
option serait de faire exactement ce que vous voulez.Par exemple:
ferait que, lorsque vous supprimez ou modifier une ligne dans la table principale, la ligne est également modifiée ou supprimée sur la table enfant.
Pertinentes docs:
Créer Des Relations De Clé Étrangère
Contraintes D'Intégrité Référentielle En Cascade
On UPDATE CASCADE signifie que si vous modifiez la clé dans le parent de la ligne, la clé sera automatiquement mis à jour sur les enfants de lignes pour correspondre à la nouvelle clé parent
OriginalL'auteur JotaBe
Comme d'autres l'ont déjà souligné,
cascade delete
est ce que vous cherchez. Dans un des commentaires, vous avez mentionné que vous ne connaissez pas les dépendances. Voici un script qui liste les dépendancesModifier la
WHERE
clause de filtrer parreferenced_entity_name
J'ai fait comme ça OÙ referenced_entity_name = 'A' ,mais il ne me donne pas toutes les colonnes
Il ne fera que vous donner de référencement et de tables de référence. Pas de colonnes
Je veux dire qu'il ne montre rien
OriginalL'auteur Raj