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 :

Message d'erreur "erreur contrainte unique"


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Points : 50
    Points
    50
    Par défaut Message d'erreur "erreur contrainte unique"
    Bonjour,

    J'ai une base de données à créer avec un script SQL, mais en l'exécutant, je me retrouve avec un message d'erreur sous postgreSQL " ERREUR: il n'existe aucune contrainte unique correspondant aux clés données pour la
    table « inscription » référencée "

    Je voulais savoir ce que ce message signifie car j'ai cherché un peu partout mais je suis bloqué sur ça depuis un moment

    Merci d'avance !

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 34
    Points : 179
    Points
    179
    Par défaut
    Bonjour Nicodu10,

    Question : De quoi est constitué ta table "inscription" et surtout quels champs sont clef primaire ?

    Ton script SQL contient aussi les INSERT avec les données j'imagine ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    salut, voici la structure des tables

    Nom : Capture.PNG
Affichages : 1904
Taille : 47,6 Ko

    il faut que je créer le script sql pour créer cette base de donnée, ensuite j'ai un jeu d'essai a ma disposition comportant les données, j'ai juste a faire un copier/coller.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Il faudrait savoir quelle est l'instruction à l’intérieur du script qui génère ce message d'erreur.
    J'opterais bien pour la création d'une contrainte d'intégrité référentielle qui fait s'appuie une ou des colonnes qui ne sont pas déclarées comme clé primaire ou unique dans la table référencée.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Points : 50
    Points
    50
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    begin transaction;
     
    CREATE TABLE auditeur 
    	(
    	id_auditeur integer,
    	nom varchar (20),
    	prenom varchar (20),
    	dat_naiss date, 
    	primary key (id_auditeur)
    	);
     
    CREATE TABLE ue
    	(
    	id_ue integer,
    	designation varchar (30),
    	ects integer,
    	primary key (id_ue)
    	);
     
    CREATE TABLE tarif 
    	(
    	id_tarif integer,
    	tarif numeric(4,2),
    	primary key (id_tarif)
    	);
     
    CREATE TABLE inscription
    	(
    	id_auditeur integer,
    	annee integer,
    	id_tarif integer,
    	primary key (id_auditeur, annee),
    	foreign key (id_tarif) references tarif (id_tarif),
    	foreign key (annee) references inscription (annee),
    	foreign key (id_auditeur) references auditeur (id_auditeur)
    	);
     
    CREATE TABLE inscrire
    	(
    	id_auditeur integer,
    	annee integer,
    	id_ue integer,
    	note1 numeric(2,2),
    	note2 numeric(2,2),
    	primary key (id_auditeur, annee, id_ue),
    	foreign key (id_ue) references ue (id_ue),
    	foreign key (id_auditeur) references inscription (id_auditeur),
    	foreign key (annee) references inscription (annee)
     
    	);
     
    CREATE TABLE reglement
    	(
    	id_auditeur integer,
    	annee integer,
    	num_ordre integer,
    	montant decimal(4,2),
    	primary key (id_auditeur, annee, num_ordre),
    	foreign key (id_auditeur) references auditeur (id_auditeur),
    	foreign key (annee) references inscription (annee)
    	);
     
    commit;
    Je précise que je ne dois pas utiliser de d'ordre "ALTER TABLE"

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    L'erreur est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE inscription
    	(...
    	primary key (id_auditeur, annee),
    	...
    	);
     
    CREATE TABLE inscrire
    	(...
    	foreign key (annee) references inscription (annee) 
    	);
    La colonne inscription.annee n'est ni une clé primaire ni une clé unique. Elle ne peut donc être référencée en tant que clé étrangère.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse j'ai résolu mon problème

    Mais du coup la colonne "annee" c'est quel type de colonne ? Une clef étrangère composée ?

    EDIT : je me retrouve désormais avec un nouveau message d'erreur lors de l'implémentation du jeu d'essai qui m'est fourni ...

    ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « inscription_pkey »
    DETAIL: La clé « (id_auditeur)=(1) » existe déjà.
    J'ai l'impression qu'il faut utiliser la close UPDATE ?

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    bonjour,

    Citation Envoyé par Nicodu10 Voir le message
    Mais du coup la colonne "annee" c'est quel type de colonne ? Une clef étrangère composée ?
    Ça ressemble surtout une redondance ! si c'est bien le cas, il faut la supprimer de la table où elle n'a rien à faire



    Citation Envoyé par Nicodu10 Voir le message
    EDIT : je me retrouve désormais avec un nouveau message d'erreur lors de l'implémentation du jeu d'essai qui m'est fourni ...

    J'ai l'impression qu'il faut utiliser la close UPDATE ?
    Ce message indique que la valeur 1 de la PK id_auteur a déjà été attribuée. Vous n'avez pas communiqué de table dont la PK est id_auteur.
    Pour éviter de vous embêter avec les valeurs de PK lors d'un insert, le plus simple est de laisser le SGBD en attribuer la valeur, en utilisant des colonnes de type "identity", "serial" ou "auto_increment" selon le SGBD

Discussions similaires

  1. Supprimer le message d'erreur "unique constraint"
    Par cyberyan dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 07/03/2013, 14h53
  2. Réponses: 25
    Dernier message: 12/06/2012, 18h38
  3. [C#]Message d'erreur etrange (Contraintes d'accessibilité)
    Par Jabbal'H dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/09/2006, 08h02
  4. Réponses: 3
    Dernier message: 12/04/2006, 11h07
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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