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 :

stack depth limit exceeded


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut stack depth limit exceeded
    Bonjour,
    je viens de faire une procédure ainsi qu'un trigger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER init_n
      BEFORE INSERT OR UPDATE
      ON matable
      FOR EACH ROW
      EXECUTE PROCEDURE init_null();
    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
     
    CREATE OR REPLACE FUNCTION init_null()
      RETURNS "trigger" AS
    $BODY$
    BEGIN
    	IF (TG_OP = 'UPDATE') THEN
    		UPDATE matable SET prsadr=NULLIF(NEW.c1,'0'), prsfax=NULLIF(NEW.c2,'0'), prspor=NULLIF(NEW.c3,'0'), prstel=NULLIF(NEW.c4,'0'), prsfon=NULLIF(NEW.c5,'0');
    	ELSIF (TG_OP = 'INSERT') THEN
    		INSERT INTO matable VALUES (NEW.c1,NEW.c2,NEW.c3,NEW.c4,NEW.c5,NEW.c6);
    	RETURN NEW;
    	END IF;
     
    END
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION init_null() OWNER TO postgres;
    dès que 'ajoute un enregistrement, je récupère l'erreur
    ERROR: stack depth limit exceeded;
    Error while executing the query
    et donc ça plante sans enregistrer le moindre élément dans ma table. quelqu'un pourrait m'aider?

    Merci.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonsoir
    peut-être la même fonction mais en supprimant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable VALUES (NEW.c1,NEW.c2,NEW.c3,NEW.c4,NEW.c5,NEW.c6);

  3. #3
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonsoir
    peut-être la même fonction mais en supprimant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable VALUES (NEW.c1,NEW.c2,NEW.c3,NEW.c4,NEW.c5,NEW.c6);
    malheureusement j'ai peure de ne pouvoir la supprimer car si je ne fait que des update et que la données n'existe pas encore dans ma table, cela devrais planter si je ne me trompe pas?
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    tu demandes à un trigger avant insert de faire un insert ce n'est pas logique donc au moment de l'insert il va rappeler le trigger et ainsi de suite.
    de plus tu ne fais aucun traitement spécial dans cet insert (tu ne fais qu'inserer) donc autant supprimer le trigger avant insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER init_n
      BEFORE  UPDATE
      ON matable
      FOR EACH ROW
      EXECUTE PROCEDURE init_null();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION init_null()
      RETURNS "trigger" AS
    $BODY$
    BEGIN
     
    		UPDATE matable SET prsadr=NULLIF(NEW.c1,'0'), prsfax=NULLIF(NEW.c2,'0'), prspor=NULLIF(NEW.c3,'0'), prstel=NULLIF(NEW.c4,'0'), prsfon=NULLIF(NEW.c5,'0');
    	return;
     
    END
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION init_null() OWNER TO postgres;

  5. #5
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    vus sous cet angle je me rend compte de ma connerie.

    Merci.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/04/2011, 13h55
  2. java.lang.OutOfMemorryError : GC overhead limit exceeded
    Par Yozol dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 06/10/2010, 11h37
  3. Python et LDAP "Size limit exceeded"
    Par BbT0n dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2010, 21h33
  4. Réponses: 4
    Dernier message: 12/05/2010, 19h39
  5. Connection limit exceeded for non-superusers
    Par bitou dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/05/2007, 03h37

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