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 :

Trigger before update


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Trigger before update
    Bonjour, voici mon probleme, qui je pense est facile a résoudre mais je n'y arrive pas :

    Mon trigger devrait faire des updates a certaines personnes mais il fait le delete du match. Incompréhensible pour moi vu que si je met des commentaires dans tout le trigger il fait quand meme le delete du match.
    Par contre si je supprime le trigger il ne le fait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER distribuer_mise BEFORE UPDATE ON JOUER
        FOR EACH ROW EXECUTE PROCEDURE verifier_competmatch();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE FUNCTION distribuer_mise () RETURNS TRIGGER AS '
    
    BEGIN
    
         ici le code mais le probleme ne vient surement pas de la car en mettant des commentaires le probleme persiste.
    
    RETURN NEW;
    END;
    ' LANGUAGE 'plpgsql';
    Si quelqu'un comprend le probleme merci de me faire par d'une solution.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Virtuosity Voir le message
    Bonjour, voici mon probleme, qui je pense est facile a résoudre mais je n'y arrive pas :

    Mon trigger devrait faire des updates a certaines personnes mais il fait le delete du match. Incompréhensible pour moi vu que si je met des commentaires dans tout le trigger il fait quand meme le delete du match.
    Par contre si je supprime le trigger il ne le fait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER distribuer_mise BEFORE UPDATE ON JOUER
        FOR EACH ROW EXECUTE PROCEDURE verifier_competmatch();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE FUNCTION distribuer_mise () RETURNS TRIGGER AS '
     
    BEGIN
     
         ici le code mais le probleme ne vient surement pas de la car en mettant des commentaires le probleme persiste.
     
    RETURN NEW;
    END;
    ' LANGUAGE 'plpgsql';
    Si quelqu'un comprend le probleme merci de me faire par d'une solution.
    Si tu es sûr, essaye de voir "RETURN NEW". Remplace par "RETURN OLD" pour voir ce qui se passe.

    Donne-nous au moins le code de la fonction pour analyse

  3. #3
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    Avec Return OLD; cela ne fonctionne pas non plus.

    Voici le trigger :

    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
    CREATE OR REPLACE FUNCTION distribuer_mise () RETURNS TRIGGER AS '
     
    DECLARE
    cursmise refcursor;
    iduti "public"."miser"."id_utilisateur"%TYPE;
    idmatch "public"."miser"."id_match"%TYPE;
    idjoueur "public"."miser"."id_joueur"%TYPE;
    res "public"."jouer"."resultat"%TYPE;
    mont "public"."miser"."montant_mise"%TYPE;
    cot "public"."cote"."cote"%TYPE;
     
    BEGIN
    mont = 0;
    cot = 0;
    IF OLD.resultat IS NULL
    THEN
    	IF NEW.resultat = TRUE
    	THEN
    		OPEN cursmise for 
    			SELECT id_utilisateur, id_match, id_joueur, montant_mise FROM MISER WHERE id_match = NEW.id_match;
    		FETCH cursmise INTO iduti, idmatch, idjoueur, mont;
    		WHILE FOUND LOOP
    			SELECT cote INTO cot FROM COTE WHERE id_match = NEW.id_match AND id_joueur = NEW.id_joueur;
    			IF idjoueur = NEW.id_joueur
    			THEN
    				UPDATE UTILISATEUR SET montant_euro_utilisateur = montant_euro_utilisateur + ( mont * ( 1 + ( 1 - cot / 100 ) ) ) WHERE id_utilisateur = iduti;
    			END IF;
    			FETCH cursmise INTO iduti, idmatch, idjoueur, mont;
    		END LOOP;
    	END IF;
    ELSE
    RAISE EXCEPTION ''Match déja cloturé'';
    END IF;	
     
     
    RETURN NEW;
    END;
    ' LANGUAGE 'plpgsql';

  4. #4
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 24
    Points
    24
    Par défaut

Discussions similaires

  1. [MySql5.5] Trigger before update Oo
    Par Xploit dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 08/09/2011, 15h41
  2. Trigger before update erreur ORA-04091
    Par cyril dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/09/2010, 11h35
  3. Trigger Before Update
    Par sat83 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/04/2009, 10h52
  4. Syntaxe Trigger before update
    Par dcabe dans le forum PL/SQL
    Réponses: 8
    Dernier message: 21/07/2008, 09h53
  5. Problème trigger BEFORE UPDATE
    Par berceker united dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 30/08/2006, 16h55

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