foreign key

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : foreign key

Re: foreign key

par moogli » 27 juil. 2016, 13:34

CONSTRAINT `questions_ibfk_1` FOREIGN KEY (`id_test`) REFERENCES `tests` (`test_id`) ON DELETE CASCADE ON UPDATE CASCADE)

CREATE TABLE questions (
questionid INT AUTO_INCREMENT PRIMARY KEY,
testid INT NOT NULL,

en clair le message d'erreur indique une colonne id_test et le create table contient testid c'est "étonnant".

rien de plus

@+

Re: foreign key

par apprentice » 27 juil. 2016, 07:14

merci beaucoup pour ta reponse moogli
stp qu'est ce que tu veux dire par l'erreur ne correspond pas a mes create table?

Re: foreign key

par moogli » 26 juil. 2016, 13:08

salut,

coté modèle, quand on voit premier leurre, xxx leurre c'est qu'il y a surement un problème et qu'une table pour stocker cette information serait la bienvenue.
cela apporte aussi la facilité d'ajouter une ou plusieurs entrées sans devoir ajouter 40 colonnes à la table (sans parler du nom peu parlant).

pour ce qui est de l'erreur elle dit simplement que la contrainte de clef étrangère ne peux être satisfaite (en se fait violer remarque ....) avec les données fournit.

en clair tu essais d'insérer dans questions.test_id une valeur qui n'existe pas dans test.test_id.
Il faut impérativement que la valeur correspondent et soit indiquée dans la requête SQL d'insertion ou de mise à jour.

pour info : Tes "create table" ne correspondent pas au message d'erreur ...

@+

foreign key

par APRRENTICE » 22 juil. 2016, 15:31

Bonsoir a tout le monde,
Je ne my connais pas du tout en my sql et je dois creer des tables qui stockent les questions de differents tests. Les donnees proviennent dun formulaire qui contient le champ nomtest, question, reponse, premier leurre, deuxieme leurre et troisieme leurre.
jai besoin de votre avis sur mon design qui se presente comme suit jai deux tables
1. table test
testid
nomtest
2. table question
questionid
testid(cle etrangere)
question
reponse
premier leurre
deuxieme leurre
troisieme leurre

1. le premier gros probleme que jai cest que je ne sais pas comment je vais indiquer a my sql quil doit increment et passer a un autre test.
2. je sais que la cle etrangere lie les questions a leur test mais voici lerreur que my sql me renvoie chaque fois que jessaie de stocker mes donnees :
Cannot add or update a child row: a foreign key constraint fails (`draft_database`.`questions`, CONSTRAINT `questions_ibfk_1` FOREIGN KEY (`id_test`) REFERENCES `tests` (`test_id`) ON DELETE CASCADE ON UPDATE CASCADE)
voici les codes que jai utilise pour creer mes tables:
CREATE TABLE tests (
test_id INT AUTO_INCREMENT PRIMARY KEY,
test_name VARCHAR(100)
);

CREATE TABLE questions (
questionid INT AUTO_INCREMENT PRIMARY KEY,
testid INT NOT NULL,
question VARCHAR(100),
reponse VARCHAR(100),
premier leurre VARCHAR(100),
deuxieme leurre VARCHAR(100),
troiseme leurre VARCHAR(100),
FOREIGN KEY (testid) REFERENCES tests(testid)
ON UPDATE CASCADE ON DELETE CASCADE
);
Votre aide est la bienvenue
Merci d'avance