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

PostgreSQL Discussion :

Ajout d'une contrainte


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut Ajout d'une contrainte
    Bonjour à tous,

    Avec phpPgAdmin, j'essaie d'ajouter une contrainte à l'un des champs d'une de mes tables, mais j'obtiens une erreur que je ne comprends pas...

    La clef primaire de fr_dic est id_entry
    Dans fr_prop, j'ai aussi un champ id_entry censé pointer sur une entrée de fr_dic s'il n'est pas NULL.

    Lorsque je clique sur Ajouter une contrainte dans fr_prop, j'entre deux valeurs:
    Nom : fr_prop_id_entry_fkey
    Définition : FOREIGN KEY (id_entry) REFERENCES fr_dic(id_entry)

    ce qui génère la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE "fr_prop"
    ADD CONSTRAINT "fr_prop_id_entry_fkey"
    CHECK (FOREIGN KEY (id_entry) REFERENCES fr_dic(id_entry))
    et l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR:  syntax error at or near "FOREIGN"
    Je ne comprends pas d'où vient l'erreur, car j'ai pourtant déjà une contrainte qui ne pose pas problème :
    Nom : fr_prop_id_user_fkey
    Définition : FOREIGN KEY (id_user) REFERENCES users(id_user)

    Quelqu'un a-t-il une idée de la provenance de l'erreur?

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Syntaxiquement cela devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE "fr_prop"
    ADD CONSTRAINT "fr_prop_id_entry_fkey"
     FOREIGN KEY (id_entry) REFERENCES fr_dic(id_entry)
    car pas besoin de mettre un CHECK sur un Foreign key, la vérification de l'existence de la clé parente est déjà faite implicitement à chaque insert/update de donnée
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Oui, effectivement.
    Merci pour le tuyau...

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

Discussions similaires

  1. [10gR2] Ajout d'une contrainte de validation des données complexes
    Par turbo_chess dans le forum SQL
    Réponses: 10
    Dernier message: 15/10/2013, 12h35
  2. Ajout d'une contrainte sur un champ
    Par Djobird dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/07/2011, 11h14
  3. [SQL-2008] Ajout d'une contrainte à une table temporaire
    Par Depite dans le forum Développement
    Réponses: 3
    Dernier message: 26/08/2010, 15h26
  4. problème lors de l'ajout d'une contrainte
    Par belgariel dans le forum SQL
    Réponses: 4
    Dernier message: 04/11/2009, 11h17
  5. Ajout d'une contrainte à une table
    Par ka123tn dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/04/2009, 13h54

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