Conseils et aide pour une suppression en cascade dans une base de donnée [Résolu]

Messages postés
27
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
15 juin 2010
- - Dernière réponse : ririchouchou
Messages postés
10
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
2 mai 2013
- 15 juin 2010 à 12:53
Bonjour :)

Je vais travailler sur un petit programme de gestion d'utilisateurs et de dossiers de travail, sous Visual Studio 2005, avec une base de donnée sous SQL Server. Je vais avoir une table "utilisateur", une table "dossier" et une table "travailler" dont la clé primaire sera composée du code utilisateur et du numéro de dossier.

Dans mon programme, je souhaiterai pouvoir faire des suppressions en cascade. Exemple: je supprime un utilisateur, ce qui aurait pour effet de supprimer toutes les lignes de la table "Travailler" qui comportent le code de cet utilisateur.

Comme je n'ai jamais fait de suppression en cascade, je ne sais pas comment celà fonctionne. J'aimerais donc savoir s'il faut créer la base de donnée d'une manière spécifique et si la suppression en cascade se gère sous SQL Server (avec un trigger par exemple ou une procédure stockée) ou bien si cela doit être fait dans les dataset/data adapter du programme sous visual studio.

Merci par avance pour votre aide :)
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
3
Merci
Salut,

Le moteur en lui même peut gérer ce genre de choses : Contraintes d'intégrité référentielle en cascade
Je ne l'ai jamais utilisé par contre.

/*
coq
MVP Visual C#
CoqBlog
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
3
Merci
Re,

En fait tu dois quand même pouvoir poser cette relation par un script.

ALTER TABLE [dbo].[LaTableFille]
ADD CONSTRAINT [LeNomDeLaRelation]
  FOREIGN KEY ( [LeNomDeLaColonneDeLaTableFille])
  REFERENCES [dbo].[LaTableMere] ([LeNomDeLaColonneDeLaTableMére])
ON UPDATE CASCADE

Avant de lancer ce script il faut détruire la relation existante.

C# is amazing, enjoy it!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
27
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
15 juin 2010
3
Merci
Salut :)

Il faut faire un clic droit sur une table puis cliquer sur Modifier. Ensuite il faut faire un clic droit sur une des colonnes de la table n'importe laquelle) et choisir Relations.

Après avoir généré ta relation entre ta table et une autre table, clique sur cette relation et dans la partie droite de la fenêtre, clique sur la croix à côté de la ligne Spécification Insert et Update et là tu peux définir le mode cascade :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ethan94
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
0
Merci
Bonsoir

en effet, Sql server gère ça très bien sans avoir a créer un trigger
Dans entreprise manager, dans la base crée un diagram avec tes tables,
Ajoute les relations si ce n'est dèjà fait (clicke sur la colonne clef primaire de la table fille et glisse là sur la colonne clef secondaire de la table mére) dans les propriétés de la relation il y a un "check box" "Cascade delete related records" (désolé je l'ai en anglais).

C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
Messages postés
27
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
15 juin 2010
0
Merci
Bonjour et merci pour vos réponses :)

J'ai installé entreprise manager. J'ai crée mes tables. Mais je ne trouve pas comment créer le diagramme de ma base de donnée. J'ai bien une ligne "schéma de base de donnée" lorsque je développe la base de donnée dans l'explorateur d'objets à gauche, mais lorsque je clique dessus, j'ai un message d'erreur.

----------------------------
Les objets de prise en charge du schéma de base de données ne peuvent pas être installés car la base de données n'a pas de propriétaire valide. Pour continuer, définissez le propriétaire de la base de données à un nom de connexion valide dans la page Fichiers de la boîte de dialogue Propriétés de la base de données ou à l'aide de l'instruction ALTER AUTHORIZATION, puis ajoutez les objets de prise en charge du schéma de base de données.
----------------------------

Pourtant je suis administrateur de mon système et bien propriétaire de la base de donnée : /
Commenter la réponse de cs_ethan94
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
0
Merci
Désolé, je ne vois pas.
ça meriterait une question sur le forum SQL.

C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
0
Merci
oops,

ON DELETE CASCADE  bien entendu, (pour le delete)

C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
Messages postés
27
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
15 juin 2010
0
Merci
Merci pour l'explication :)

J'ai trouvé une autre méthode pour créer ces contraintes. En cliquant droit sur les tables, on peut lancer un semi-assitant pour créer des contraintes :) J'ai testé et ça à l'air de fonctionner. Si jamais ça ne fonctionne pas pour tous, j'essaierai ton modèle.

Encore merci :)
Commenter la réponse de cs_ethan94
Messages postés
10
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
2 mai 2013
0
Merci
bonjour ethan94 ,
vous pouvez m'expliquer un peu encore la méthode car je veux effectuer une suppression en cascade , vous avez dit click droit sur les tables mais j ai pas réussie a voire la semi assistance et quelles sont les constraits que je doit créer ,répondez moi vite svp
Commenter la réponse de ririchouchou
Messages postés
10
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
2 mai 2013
0
Merci
merci bieen ca a marché ^^
Commenter la réponse de ririchouchou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.