Jump to content

Archived

This topic is now archived and is closed to further replies.

HerrMueller

[Environ résolu] Problème d'insertion dans la BD

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites

Bon bin désolé, pas trop d'idée... :emo_im_undecided:

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites





×
×
  • Create New...