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

SQL Procédural MySQL Discussion :

Problème trigger after insert [MySQL-5.5]


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Par défaut Problème trigger after insert
    Bonjour,

    Alors j'ai une BDD qui s'appelle fff avec deux tables : equipe(num_eq, nom_eq, nb_point) et matchs (num_mat, date, score_d (score domicile), score_e(score exterieur), #num_eqd(equipe domicile), #num_eqe (equipe exterieur)

    J'ai réaliser un trigger qui s'effectue avec l'insertion d'un match qui doit update le nb_point des équipes qui ont joués

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BEGIN
    IF NEW.score_d = NEW.score_e THEN
    UPDATE fff.equipe, fff.matchs SET nb_point = 1 WHERE matchs.num_eqd = equipe.num_eq and equipe.num_eq = matchs.num_eqe;
    ELSEIF NEW.score_d > NEW.score_e THEN
    UPDATE fff.equipe, fff.matchs SET nb_point = 3 WHERE equipe.num_eq = matchs.num_eqd;
    UPDATE fff.equipe, fff.matchs SET nb_point = 0 WHERE equipe.num_eq = matchs.num_eqe;
    ELSEIF NEW.score_d < NEW.score_e THEN
    UPDATE fff.equipe, fff.matchs SET nb_point = 0 WHERE equipe.num_eq = matchs.num_eqd;
    UPDATE fff.equipe, fff.matchs SET nb_point = 3 WHERE equipe.num_eq = matchs.num_eqe;
    END IF;
    END
    quand je la sauvegarde il n'y a aucune erreur et quand j'entre un nouveau match où il y a égalité, et bien il n'y a aucun point attribuer alors qu'il doit m'insérer 1 point pour chaque équipe. Si je fait une victoire pour l'une des deux équipes, les deux équipes ont les 3 points alors que ça devrait être qu'une seule équipe.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Par défaut
    Il faut utiliser NEW.num_eq* :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BEGIN
    	IF NEW.score_d = NEW.score_e THEN
    		UPDATE fff.equipe SET nb_point = 1 WHERE equipe.num_eq IN (NEW.num_eqd,NEW.num_eqe);
    	ELSEIF NEW.score_d > NEW.score_e THEN
    		UPDATE fff.equipe SET nb_point = 3 WHERE equipe.num_eq = NEW.num_eqd;
    		UPDATE fff.equipe SET nb_point = 0 WHERE equipe.num_eq = NEW.num_eqe;
    	ELSEIF NEW.score_d < NEW.score_e THEN
    		UPDATE fff.equipe SET nb_point = 0 WHERE equipe.num_eq = NEW.num_eqd;
    		UPDATE fff.equipe SET nb_point = 3 WHERE equipe.num_eq = NEW.num_eqe;
    	END IF;
    END

  3. #3
    Membre averti
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Par défaut
    Re, je viens d'essayer, malheureusement cela n'update pas les points :/

  4. #4
    Membre averti
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Par défaut
    C'est bon ça marche ! merci Fred !

  5. #5
    Membre averti
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Par défaut
    Par contre juste une chose, pour cumuler les points des équipes, j'utilise OLD.nb_point ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb_point = nb_point + 1

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

Discussions similaires

  1. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/12/2006, 13h37
  2. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/12/2006, 14h23
  3. Un Trigger After INSERT peut-il empêcher l'INSERT ?
    Par cian2006 dans le forum Oracle
    Réponses: 3
    Dernier message: 13/09/2006, 17h27
  4. Trigger after insert, sans each row, possible ??
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 16/02/2006, 15h18

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