|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 9 ![]() |
Bonjour,
Je développe actuellement un programme de gestion d'élèves J'ai une table Classe(idClasse...) et une table Eleve. la table Eleve est lié à la table Classe avec une clé étrangère. Le problème, si je met ON DELETE CASCADE dans ma clé étrangère, lorsque je supprime une classe, il me supprime tous les élèves de la classe. Et si je ne met pas ON DELETE CASCADE j'ai un message d'erreur de contrainte référentielle. Comment faire pour pouvoir supprimer une classe sans pour autant supprimer les élèves ?? Merci d'avance. |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Citation:
![]() Les contraintes d’intégrité sont justement faites pour cela. Quand vous définissez une clef étrangère sur la colonne IDClasse de la table Élève, c'est justement pour spécifier qu'un élève appartient à une classe. Il vous est alors impossible de supprimer une classe qui contient des élèves car alors, ces élèves appartiendraient à une classe qui n'existe pas, ce qui poserait un problème d'integrité de vos données ! C'est donc a vous de définir votre besoin, et le fonctionnement logique qui en découle. Si d'un point de vue logique vous estimez qu'il est possible qu'un élève n'appartienne [temporairement] à aucune classe, il vous est possible de spécifier la colonne IDClasse de la table eleve comme nullable, et changer la comportement de votre clef etrangere en cas de suppression à ON DELETE SET NULL Si au contraire un élève doit obligatoirement appartenir à une classe, alors laissez votre contrainte sans cascade, et c'est votre application qui doit s'assurer qu'une classe ne contient aucun élève avant d'en permettre la suppression. |
|
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 9 ![]() |
j'ai la réponse à ma question
![]() Merci pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com