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 :

problème de trigger avec PostgreSQL 9.2


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 131
    Par défaut problème de trigger avec PostgreSQL 9.2
    Je cherche à créer un simple trigger avec PostgreSQL. J'ai la 9.2 mais j'ai aussi essayé avec la 8.3. Le résultat est le même. Lorsque j'exécute ce simple code :

    CREATE OR REPLACE FUNCTION public.trigger_tmp (
    )
    RETURNS trigger AS'
    BEGIN
    NEW.NOM:=''xxx'';
    return NEW;
    END
    'LANGUAGE 'plpgsql'
    ;

    CREATE TABLE public."TMP" (
    "ID" SERIAL,
    "NOM" VARCHAR(30) NOT NULL,
    CONSTRAINT "TMP_pkey" PRIMARY KEY("ID")
    ) WITHOUT OIDS;

    CREATE TRIGGER "TMP_trg"
    BEFORE INSERT OR UPDATE
    ON public."TMP" FOR EACH ROW
    EXECUTE PROCEDURE public.trigger_tmp();

    INSERT INTO public."TMP"("NOM") VALUES('ABC');
    J'obtiens l'erreur :

    L'enregistrement "new" n'a pas de champ "nom".
    Le code est syntaxiquement correct. Il insère 'ABC' dans la colonne NOM mais à cause du trigger, c'est 'xxx' qui devrait y être finalement mis. Le trigger est bien exécuté puisque j'ai le msg d'erreur. J'ai parcouru internet longuement et je ne vois pas où est mon erreur. Quelqu'un a-t-il une idée ?

    Serge

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    je penses que votre problème vient des " qui entoures vos noms de colonnes.

    Du coup dans le trigger il faut que vous mettiez :

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 131
    Par défaut
    @punkoff

    Bien vu ! Le script avait été généré par un assistant et je n'ai pas remarqué les guillemets autour des colonnes. J'ai transformé le script en :

    CREATE OR REPLACE FUNCTION public.trigger_tmp (
    )
    RETURNS trigger AS'
    BEGIN
    NEW.NOM:=''xxx'';
    return NEW;
    END
    'LANGUAGE 'plpgsql'
    ;

    CREATE TABLE public."TMP" (
    ID SERIAL,
    NOM VARCHAR(30) NOT NULL,
    CONSTRAINT "TMP_pkey" PRIMARY KEY(ID)
    ) WITHOUT OIDS;

    CREATE TRIGGER "TMP_trg"
    BEFORE INSERT OR UPDATE
    ON public."TMP" FOR EACH ROW
    EXECUTE PROCEDURE public.trigger_tmp();

    INSERT INTO public."TMP"(NOM) VALUES('ABC');
    et ça marche ! Merci beaucoup ! CA faisait plusieurs heures que je cherchais ... Je ne connais pas bien PostgreSQL.

    Serge

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

Discussions similaires

  1. Problème de connexion avec PostgreSQL
    Par MAMADVE dans le forum JDBC
    Réponses: 5
    Dernier message: 14/07/2015, 22h40
  2. probléme de connexion avec postgresql
    Par selmagsi dans le forum Général Java
    Réponses: 2
    Dernier message: 09/05/2014, 17h21
  3. Un problème de connexion avec PostgreSQL
    Par edwithenwisdom dans le forum NetBeans
    Réponses: 4
    Dernier message: 13/06/2011, 13h18
  4. Problème de connection avec PostGresql
    Par NiceMarocain dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 30/04/2010, 20h19
  5. Problème de login avec Postgresql
    Par maddog2032 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/04/2005, 13h19

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