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 Mysql


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut Problème TRIGGER Mysql
    Bonjour,

    Je débute avec les triggers sous mysql et j'ai un problème.
    J'ai une table note qui contient plusieurs identifiants et des champs NoteExam, NoteTp et MoyenneModule définie comme cela :

    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
    CREATE TABLE note
    (
    IdFormation INT,
    IdEtudiant INT,
    IdModule INT,
    IdIntervenant INT,
    PRIMARY KEY(IdFormation,IdEtudiant,IdModule,IdIntervenant),
    FOREIGN KEY (IdFormation) REFERENCES formation(IdFormation),
    FOREIGN KEY (IdEtudiant) REFERENCES etudiant(IdEtudiant),
    FOREIGN KEY (IdModule) REFERENCES modules(IdModule),
    FOREIGN KEY (IdIntervenant) REFERENCES intervenant(IdIntervenant),
    NoteExam INT NOT NULL,
    NoteTp INT,
    MoyenneModule FLOAT
    );
    Ce que je voudrais, c'est pouvoir créer un trigger qui permet à chaque insert d'une note d'exam et de tp, calcul la moyenne du module. Pour cela, j'ai réaliser le trigger suivant, mais j'ai des messages d'erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER calcul_moyenne
    BEFORE INSERT ON note
    FOR EACH ROW
    BEGIN
      IF (NEW.NoteTp IS NULL) THEN 
      set @MoyenneModule=NEW.NoteExam;
     ELSE 
      set @MoyenneModule=(2/3)*NEW.NoteExam+(1/3)*NEW.NoteTp;
     END IF;
    END;
    Si quelqu'un voit le problème, merci.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    mais j'ai des messages d'erreurs.
    C'est bien de nous les communiquer...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Voilà les erreurs que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near '' at
    line 6
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'ELSE
     
      set @MoyenneModule=(2/3)*NEW.NoteExam+(1/3)*NEW.NoteTp' at line 1
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'END I
    F' at line 1
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'END'
    at line 1

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Alors, peut-être un problème lié au delimiteur...

    Inspire toi de l'exemple fourni ici : http://dev.mysql.com/doc/refman/5.0/...-triggers.html

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Si quelque un voit d'où vient le problème? Merci d'avance.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    Où as tu declaré @MoyenneModule ?

Discussions similaires

  1. Problème avec trigger MySQL
    Par el_kiko dans le forum MySQL
    Réponses: 1
    Dernier message: 28/02/2010, 14h23
  2. Probléme Trigger sur Mysql 5
    Par madousn dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 14/08/2008, 09h20
  3. TRIGGER MySQL 5.0 Yes or No
    Par popol666 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2005, 13h51
  4. [JDBC]Problème Accent MySQL depuis DB browser dans eclipse
    Par chpruvos dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/08/2005, 14h14

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