0 votes

Comment supprimer les FK un à plusieurs ?

J'ai une table (aspnet_Membership) qui contient des enregistrements de spam que je dois supprimer. Il y a quelques clés étrangères et j'essaie d'écrire une instruction SQL simple pour supprimer les clés étrangères afin de pouvoir supprimer l'enregistrement primaire.

Il y a donc une table appelée "aspnet_UsersInRoles" qui contient l'ID de l'utilisateur et l'ID du rôle, et l'ID de l'utilisateur se trouve dans ma table "aspnet_Membership". Je ne peux pas supprimer l'utilisateur sans supprimer un enregistrement (ce que je ne pourrais pas faire de toute façon en raison de contraintes).

Comment puis-je exécuter essentiellement ce qui suit :

'delete from 'aspnet_UsersInRoles' where UserID in 'aspnet_Membership' and 'aspnet_Membership.CreateDate >= '03/15/2009'?

Merci pour toute suggestion.

4voto

Chad Birch Points 39087

Eh bien, vous auriez probablement pu configurer les clés étrangères pour faire une suppression en cascade, de sorte que vous n'avez pas besoin de vous en soucier, mais votre essai de la requête était assez proche de celle qui fonctionnerait, il suffit d'utiliser une sous-requête :

DELETE FROM aspnet_UsersInRoles WHERE UserID IN (SELECT UserID FROM aspnet_Membership WHERE aspnet_Membership.CreateDate >= '03/15/2009')

1voto

eulerfx Points 16320

Vous pouvez modifier les contraintes pour effectuer un "tout en cascade" lors de la suppression : lien

Sinon, vous pouvez regarder dans la table sys.foreign_keys pour obtenir toutes les clés étrangères utilisant la clé primaire et générer automatiquement sql pour effectuer les suppressions en premier lieu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X