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 PostgreSQL Discussion :

Contrainte clé étrangère non respectée


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Contrainte clé étrangère non respectée
    Bonjour j'essaie de faire une requête INSERT sur une table (projects) laquelle contient 2 clés étrangère dont une vers la table users

    table users :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    -- Table: users
     
    -- DROP TABLE users;
     
    CREATE TABLE users
    (
      mail_address character varying(100),
      nickname character varying(100),
      last_name character varying(100),
      first_name character varying(100),
      pass character varying(40),
      phone character varying(14),
      id serial NOT NULL,
      cookie_code character varying(40),
      date_register date DEFAULT ('now'::text)::date,
      siren_number character(9),
      CONSTRAINT pk_user PRIMARY KEY (id )
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE users
      OWNER TO admin;
     
    -- Index: pki_user
     
    -- DROP INDEX pki_user;
     
    CREATE INDEX pki_user
      ON users
      USING btree
      (id );
    table projects :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    -- Table: projects
     
    -- DROP TABLE projects;
     
    CREATE TABLE projects
    (
      id serial NOT NULL,
      title character varying(100),
      description text,
      id_tarif integer,
      date_rec date DEFAULT ('now'::text)::date,
      id_user integer NOT NULL,
      CONSTRAINT pk_project PRIMARY KEY (id ),
      CONSTRAINT fk_tarif FOREIGN KEY (id_tarif)
          REFERENCES tarifs (id) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE CASCADE,
      CONSTRAINT fk_user FOREIGN KEY (id_user)
          REFERENCES users (id) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE CASCADE
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE projects
      OWNER TO admin;
     
    -- Index: fki_tarif
     
    -- DROP INDEX fki_tarif;
     
    CREATE INDEX fki_tarif
      ON projects
      USING btree
      (id_tarif );
     
    -- Index: fki_user
     
    -- DROP INDEX fki_user;
     
    CREATE INDEX fki_user
      ON projects
      USING btree
      (id_user );
    Java lance une exception dont le message est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: insert or update on table "projects" violates foreign key constraint "fk_user" Détail : Key (id_user)=(5) is not present in table "users".
    Seulement j'ai vérifié il y a bien un enregistrement dans users avec id=5.
    J'avoue ne pas trop bien comprendre ce qui se passe.
    Merci.

  2. #2
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut
    En effet c'est vraiment bizarre ça

  3. #3
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Ça sent le problème de transaction... l'INSERT est fait à la main? Quelle différence entre cet objet et les 4 précédents?
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  4. #4
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Comment tu vérifie la présence de la ligne avec id=5 dans users?
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  5. #5
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    je le vérifiais via pgadmin3, par contre j'ai laissé tombé le projet de cette base de données, pour info il s'agissait d'un problème d'héritage, je ne me rappelle plus trop le id etait dans le parent mais pas dans l'enfant.

    Merci pour vos réponses

Discussions similaires

  1. Mapping Table SQLite non respect des contraintes
    Par oneshoot dans le forum ADO.NET
    Réponses: 2
    Dernier message: 08/02/2011, 16h22
  2. Réponses: 7
    Dernier message: 24/11/2008, 15h55
  3. Insertion données avec contrainte non respectée
    Par yoyostras dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/05/2008, 16h20
  4. [Oracle] Contrainte CHECK non respectée
    Par ms7 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/07/2006, 17h02
  5. Contraintes de clés étrangères non respectées
    Par parfait dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/07/2004, 12h48

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