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

Langage SQL Discussion :

ERROR:insert or update on table "ecol" violates fo


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Débutant] Violation de clé étrangère (FK)
    Bonjour,
    Voici des jours que je suis bloquer par ce message d'erreur qui m'empeche de progresser dans mon programme.
    Le message est :

    ERROR: insert or update on table "ecoles" violates foreign key constraint "ecoles_zones_fk"
    DETAIL: Key (ref_zone)=(2) is not present in table "zones".


    /*suppression des tables si elles existent*/
    DROP TABLE ZONES CASCADE;
    DROP TABLE COORDONNEES CASCADE;
    DROP TABLE ECOLES ;
    /* suppression des séquences si elles existent*/
    DROP SEQUENCE seq_coordonnees ;
    DROP SEQUENCE seq_zones ;
    DROP SEQUENCE seq_ecoles ;
    /*création des séquences */
    CREATE SEQUENCE seq_coordonnees INCREMENT 1 START 1;
    CREATE SEQUENCE seq_zones INCREMENT 1 START 1;
    CREATE SEQUENCE seq_ecoles INCREMENT 1 START 1;
    /* création des tables*/
    CREATE TABLE COORDONNEES (
    NUM INTEGER NOT NULL DEFAULT NEXTVAL('seq_coordonnees'),
    X INTEGER NOT NULL,
    Y INTEGER NOT NULL,
    CONSTRAINT COORDONNEES_PK PRIMARY KEY(NUM)
    );
    CREATE TABLE ZONES (
    EMME2 INTEGER NOT NULL PRIMARY KEY,
    REF_COORD INTEGER NOT NULL,
    NOM VARCHAR (20),
    CONSTRAINT ZONES_COORDONNEES FOREIGN KEY (REF_COORD) REFERENCES COORDONNEES (NUM)
    );

    CREATE TABLE ECOLES (
    NUM INTEGER NOT NULL DEFAULT NEXTVAL('seq_ecoles')CONSTRAINT ECOLES_PK PRIMARY KEY,
    NOM VARCHAR(20),
    REF_COORD INTEGER NOT NULL,
    REF_ZONE INTEGER NOT NULL,
    CONSTRAINT ECOLES_ZONES_FK FOREIGN KEY(REF_ZONE) REFERENCES ZONES(EMME2),
    CONSTRAINT ECOLES_COORDONNEES_FK FOREIGN KEY(REF_COORD) REFERENCES COORDONNEES(NUM)
    );
    /* insertion des données

    INSERT INTO ECOLES (NUM, NOM, REF_COORD, REF_ZONE) VALUES (DEFAULT, 'Ste_Marie', 2 , 2 );
    INSERT INTO ECOLES (NUM, NOM, REF_COORD, REF_ZONE) VALUES (DEFAULT, 'Air_Pur', 1, 1);

    INSERT INTO ZONES (EMME2, REF_COORD, NOM) VALUES (8001, 1, 'Seraing');
    INSERT INTO ZONES (EMME2, REF_COORD, NOM) VALUES (8002, 2, 'Ans');

    INSERT INTO COORDONNEES ( X, Y) VALUES (3, 2);
    INSERT INTO COORDONNEES ( X, Y) VALUES (7, 9);

    SELECT * FROM ZONES;
    SELECT * FROM COORDONNEES;
    SELECT * FROM ECOLES;

    Y a t'il une bonne volnté pour me débloquer?
    MERCI[/b]

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Violation d'une intégrité référentielle je dirais ...

    Comme la table ECOLES inclut des clés étrangères à la fois sur la table COORDONNEES et ZONES, il faut insérer les lignes correspondantes dans ces deux tables auparavant.
    Et avec les bonnes valeurs bien sûr ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut ERROR: insert or update on table "ecoles" violates
    Pour dire clairement je suis nouveau dans SQL
    Que comprends tu par inserer les lignes correspondantes dans la table ECOLE?
    PS comme le forum sera fermé 1 ou 2 jours je te passe mon email car la chose est urgente pour moi mbalde111@yahoo.com
    Merci
    A bientot

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Je réponds vite car je suis pressé ...

    Dans la table ECOLES, il y une colonne REF_ZONE qui référence la table ZONES sur la clé primaire de celle-ci EMME2 (on parle de clé étrangère). Ca veut dire qu'avant d'insérer une ligne dans la table ECOLES ton SGBD va vérifier que la valeur que tu indiques dans la colonne REF_ZONE existe bien comme clé d'une ligne dans la table ZONES.
    Donc, il y a bien un ordre dans les insertions dans tes tables et avec les bonnes valeurs ...

    PS1. Je te laisse le soin de trouver les autres clés étrangères de ton modèle de données ...

    PS2. Avant de manipuler le concept d'intégrité référentielle je pense qu'il faut le comprendre un minimum ...

Discussions similaires

  1. Insert ou update sur table mysql
    Par moonshine972 dans le forum C#
    Réponses: 6
    Dernier message: 05/04/2011, 10h28
  2. Insert or Update sans table de référence
    Par LDPDC dans le forum SQL
    Réponses: 4
    Dernier message: 25/05/2009, 14h47
  3. ERROR: insert or update on table "ecole" violate
    Par doulel dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/04/2006, 21h24

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