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 :

[Debutant]Probleme d'insert sur sequence !


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut [Debutant]Probleme d'insert sur sequence !
    Bonjour à tous !

    Voila j'ai un probleme. ça vous l'aviez deviné, y'en a qui commence a avoir l'habitude avec moi lol.

    Lorsque que je fais un insert sur un table francais dont voici le code :
    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
    CREATE TABLE francais
    (
      id_antiquaire serial NOT NULL,
      client bool NOT NULL DEFAULT false,
      nom_antiquaire varchar(50) NOT NULL,
      nom_boutique varchar(100) NOT NULL,
      adresse_boutique varchar(130) NOT NULL,
      id_village int4 NOT NULL,
      telephone varchar(10) NOT NULL,
      fax varchar(10),
      mobile varchar(10),
      email varchar(150),
      site varchar(150),
      valide bool NOT NULL DEFAULT false,
      date_saisie date NOT NULL,
      no_departement varchar(3),
      id_prestation int4,
      CONSTRAINT pk_francais1 PRIMARY KEY (id_antiquaire),
      CONSTRAINT fk_francais2 FOREIGN KEY (no_departement) REFERENCES departement (no_departement) ON UPDATE RESTRICT ON DELETE RESTRICT
    ) 
    WITHOUT OIDS;
    ALTER TABLE francais OWNER TO postgres;
    GRANT ALL ON TABLE francais TO postgres;
    GRANT ALL ON TABLE francais TO public;
    Voici mon insert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO francais (client, nom_antiquaire, ...,  id_prestation) VALUES (FALSE, 'Prenom De L\'anitquaire Nom De L\'antiquaire', ...,  0)
    Il me signale que la sequence n'existe pas !!
    ERROR: relation "public.francais_id_antiquaire_seq" does not exist
    Pourtant, un serial cré automatiquement une sequence !!

    Quelqu'un pourrait me dire pourquoi ca ne fonctionne pas, j'aimerais éviter de créer la séquence.

    Merci beaucoup d'avance[/code]

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Si tu essaies de remonter "à la main" les infos de ta séquence, il te jette toujours ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM francais_id_antiquaire_seq;

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    oui, cela fonctionne bien maintenant.
    En fait, tout simplment, il ne m'avait pas créé la séquence. C'est d'ailleurs la seule table ou la séquence n'avait pas été créée automatiquement : bizarre.

    Le problème est que maintenant je galère a récupérer le nextval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from francais_id_antiquaire_seq
    semble marcher mais ne me renvoie rien. Je crois que c'est normal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT currval('francais_id_antiquaire_seq')
    plante et me dit :
    • currval of sequence "francais_id_antiquaire_seq" is not yet defined in this session

    J'ai bien trouvé le sujet sur le forum parlant de cela, et il était dit qu'il fallait faire un nextval auparavant, ce que je fais.

    Une idée !

  4. #4
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    De mon côté, via pgAdmin, la requête que j'ai donnée me renvoie les infos de ma séquence (nom, valeur min, valeur max, valeur courante, incrément, etc), bizarre...

    Sinon, l'autre message d'erreur est normal. Dans ta session courante, tant que tu n'as pas fait appel à ta séquence en incrémentation (avec nextval, donc), tu ne peux pas récupérer sa valeur courante avec currval. Par contre, si tu fais une insertion, et que tu la rappelles, ça doit fonctionner.

Discussions similaires

  1. [DEBUTANT] PROBLEME D'INSERTION
    Par kinon dans le forum ASP.NET
    Réponses: 8
    Dernier message: 06/02/2009, 17h56
  2. [Debutant - red hat] probleme d installation sur un serveur RAID1 (hardware)
    Par pierrot10 dans le forum Administration système
    Réponses: 7
    Dernier message: 09/12/2008, 13h19
  3. probleme d'insertion flash sur mon site
    Par chills dans le forum Intégration
    Réponses: 1
    Dernier message: 22/08/2008, 01h25
  4. [Debutant] Probleme sur un select
    Par Flamby38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2008, 15h57
  5. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 19h59

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