HerrMueller Posté(e) 9 août 2011 Share Posté(e) 9 août 2011 Bonjour tout le monde. Voilà mon problème. J'ai deux tables (A et B ) qui sont reliées par une clé étrangère. Lorsque j'insère un enregistrement A et que la clé étrangère correspond à une clé primaire de la table B => aucun souci Cependant, l'enregistrement A ne doit pas obligatoirement être relié à la table B. Je voudrais donc dans ce cas donner la valeur -1 à la clé étrangère. Mais quand j'essaie de procéder ainsi, l'insertion ne se fait pas (je n'ai pourtant aucune erreur dans l'appli). Si, par contre, je donne à la clé étrangère une valeur en dur qui existe, ça fonctionne. Je suis en train de perdre la boule :rolleyes: Help! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bismuth76 Posté(e) 9 août 2011 Share Posté(e) 9 août 2011 Je vais peut-être dire une c*nnerie et c'est peu probable que ce soit ça mais ça pourra peut-être t'aider... Elle est unsigned ta clef étrangère ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
HerrMueller Posté(e) 9 août 2011 Auteur Share Posté(e) 9 août 2011 Je ne comprends pas trop ce que tu veux dire ni ce qu'unsigned signifie. S'il s'agit du type de données, ma clé étrangère est en integer. Je précise aussi que quand j'utilise SQLite Manager (extension Firefox dans laquelle j'importe la BD de mon appli pour faire des tests), j'arrive à insérer la valeur -1 à la clé étrangère. C'est vraiment au niveau de mon appli que ça bloque. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bismuth76 Posté(e) 9 août 2011 Share Posté(e) 9 août 2011 Unsigned signifie qu'il s'agit d'une variable non signée, qui n'accepte donc pas les nombres négatifs. Il aurait pu s'agir ici d'un usigned int ;) Pour ce qui est des BDD, j'avoue ne pas me souvenir de la façon dont on stipule ce paramètre précisément :/ Mais si c'est un unsigned, il doit y avoir un truc du genre [uNSIGNED] quelque part quand tu visualises ta table. Au pire essaye de mettre genre 2 000 000 000 à la place de -1 (tu ne dois pas avoir de clef à cette valeur je pense et ça reste dans le champs de valeurs d'un integer) et comme ça tu verras si c'est la requête d'ajout qui donne l'impression de passer ou si le problème est ailleurs (d'ailleurs, doit y avoir un moyen de savoir si une requête a été traitée correctement). Lien vers le commentaire Partager sur d’autres sites More sharing options...
HerrMueller Posté(e) 9 août 2011 Auteur Share Posté(e) 9 août 2011 Ah ok. Non il ne s'agit pas d'un unsigned. En fait, j'ai déjà essayé ta solution. Que je mettes -1 ou 5 ou 1'000'000, le problème reste le même. Si ce chiffre ne correspond à aucune clé primaire de la table B, l'enregistrement ne passe pas. :emo_im_undecided: Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bismuth76 Posté(e) 9 août 2011 Share Posté(e) 9 août 2011 Bon bin désolé, pas trop d'idée... :emo_im_undecided: Lien vers le commentaire Partager sur d’autres sites More sharing options...
HerrMueller Posté(e) 9 août 2011 Auteur Share Posté(e) 9 août 2011 J'ai finalement procédé de la sorte : créer dans la table B un enregistrement portant le nom "Non défini" que l'utilisateur choisit s'il ne veut pas lier à un véritable enregistrement. Un peu moins propre que la solution que je voulais au départ mais plus simple. De plus, cet enregistrement va m'être utile pour une autre fonctionnalité de l'appli. Merci tout de même de ta tentative d'aide! :lol: Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.