IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

comment faire quand on a des cardinalités 0,1 1,n ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut comment faire quand on a des cardinalités 0,1 1,n ?
    voila, je croyais résoudrece problème en mettant résolu, mais pas encore. je vais reposer ma question.
    j'ai la table visite type innodb qui a comme clé étrangère idstat null qui fait référence à la table statut type innodb, quand je rajoute un enregistrement dans visite sans renseigner le champ idstat il affiche le message suivant:
    Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche .

    Avez vous une idée comment résoudre ce problème?

    merci de toute réponse

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Comme je l'ai dit hier, il suffit d'y mettre NULL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE statut
    (
      id INT PRIMARY KEY
    ) ENGINE=innodb;
     
     
    CREATE TABLE visite
    (
      id INT PRIMARY KEY,
      idStat INT,
      FOREIGN KEY (idStat) REFERENCES statut(id)
    ) ENGINE=innodb;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO visite VALUES (2, NULL);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    merci de ta réponse !

    oui c'est fait quand j'ai crée le champ idsat dans la table visite j'ai mis null + la contrainte d'intégrité. j'ai fait un interface de saisie en php quand je crée la visite le message d'erreur s'affiche quand je renseigne pas la champs idstat

  4. #4
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Donne-nous la structure exacte de ta table visite, la requête que tu exécutes ainsi que le message d'erreur. Ca doit être une petite erreur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    CREATE TABLE `visite` (
      `idvisite` int(11) NOT NULL auto_increment,
      `date_visite` datetime NOT NULL default '0000-00-00 00:00:00',
      `idpersonne` int(11) NOT NULL default '0',
      `idnation` int(11) NOT NULL default '0',
      `idstat` int(11) default '0',
      `idhebergement` int(11) NOT NULL default '0',
      `idrevenu` int(11) NOT NULL default '0',
      `idorientation` int(11) NOT NULL default '0',
      PRIMARY KEY  (`idvisite`),
      UNIQUE KEY `date_visite` (`date_visite`),
      KEY `visite_ibfk_1` (`idpersonne`),
      KEY `visite_ibfk_2` (`idstat`),
      KEY `visite_ibfk_3` (`idnation`),
      KEY `visite_ibfk_4` (`idorientation`),
      KEY `visite_ibfk_5` (`idrevenu`),
      KEY `visite_ibfk_6` (`idhebergement`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
     
    --
    la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $query = "insert into visite(idvisite ,date_visite,idpersonne,idnation,idstat,idhebergement,idrevenu,idorientation)
    	VALUES ('','$date_visite','$idpersonne','$idnation','$idstat','$idhebergement','$idrevenu','$idorientation')";
    le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche
    voila, merci de vos réponses

  6. #6
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Quand tu insères une visite sans statut, que contient $idstat ?

    Au final, tu dois avoir VALUES(..., NULL, ...). Donc pas de 'NULL', pas de '' ou de '0'. Mais NULL sans aucune quote.

    Une solution serait d'enlever les quotes dans ta chaîne qui contient la requête pour $idstat. Et un peu avant, tu fais quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idstat = empty($idstat) ? 'NULL' : "'$idstat'";
    pour rajouter les quotes quand il y a une valeur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  2. Réponses: 7
    Dernier message: 30/08/2006, 16h17
  3. Comment faire pour le passage des paramètres
    Par dauphin34000 dans le forum Oracle
    Réponses: 14
    Dernier message: 25/04/2006, 14h18
  4. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52
  5. Comment faire quand on a beaucoup de binaires ?
    Par YéTeeh dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 07/12/2005, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo