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 :

Erreur de syntaxe d'un trigger


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Par défaut Erreur de syntaxe d'un trigger
    Bonjour,

    j'essaye de faire un trigger sous MySQL :
    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 TRIGGER TR_MONTANT_CONSOMME_INSERT AFTER INSERT ON T_ACTIVITE_ACT
    	 FOR EACH ROW
    		BEGIN
    			DECLARE MONTANT_ACT DECIMAL(10,2);
    			SELECT MONTANT_ACT = (NEW.ACT_NB_H_FACTURABLE * PRO_TARIF_HORAIRE)
    			FROM T_CONTRAT_CTR ctr, T_EMPLOYE_EMP emp, T_PROFIL_PRO pro
    			WHERE NEW.CTR_ID = ctr.CTR_ID
    			AND pro.CTR_ID = emp.CTR_ID
    			AND emp.CTR_ID = ctr.CTR_ID;
     
    			UPDATE T_CONTRAT_CTR
    			SET CTR_MONTANT_CONSOMME = (CTR_MONTANT_CONSOMME + @MONTANT_ACT);
     
    		END;
    END;
    mais ce code me retourne l'erreur :
    MySQL a répondu: Documentation
    #1064 - Erreur de syntaxe près de '' à la ligne 4
    Avez vous une idée sur l'erreur ?
    (J'utilise phpmyadmin)

    Merci.
    @+

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Ton script s'arrête à la ligne 4, car il y a un point virgule. Donc je te conseille de changer le demiliteur sur PHPmyadmin.. par exemple :



    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 TRIGGER TR_MONTANT_CONSOMME_INSERT AFTER INSERT ON T_ACTIVITE_ACT
         FOR EACH ROW
            BEGIN
                DECLARE MONTANT_ACT DECIMAL(10,2);
                SELECT MONTANT_ACT = (NEW.ACT_NB_H_FACTURABLE * PRO_TARIF_HORAIRE)
                FROM T_CONTRAT_CTR ctr, T_EMPLOYE_EMP emp, T_PROFIL_PRO pro
                WHERE NEW.CTR_ID = ctr.CTR_ID
                AND pro.CTR_ID = emp.CTR_ID
                AND emp.CTR_ID = ctr.CTR_ID;
     
                UPDATE T_CONTRAT_CTR
                SET CTR_MONTANT_CONSOMME = (CTR_MONTANT_CONSOMME + @MONTANT_ACT);
     
            END;
    END$

    Délimiteur : $

  3. #3
    Membre éclairé
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Par défaut
    Salut,

    effectivement pour cette erreur c'était bien ça ! Merci ! J'avais déjà vu cette astuce sur le ent mais je ne savais pas pourquoi c'était utilisé...

    Une seconde erreur me bloque :
    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
    DELIMITER $$
    CREATE TRIGGER TR_MONTANT_CONSOMME_INSERT AFTER INSERT ON T_ACTIVITE_ACT
    	FOR EACH ROW
    		BEGIN 
    			DECLARE MONTANT_ACT DECIMAL(10,2);
    			DECLARE CTR_ID_ INTEGER;
     
    			SELECT @MONTANT_ACT = (ACT_NB_H_FACTURABLE * PRO_TARIF_HORAIRE), @CTR_ID_ = ctr.CTR_ID
    			FROM T_CONTRAT_CTR ctr, T_EMPLOYE_EMP emp, T_PROFIL_PRO pro
    			WHERE NEW.CTR_ID = ctr.CTR_ID
    			AND pro.CTR_ID = emp.CTR_ID
    			AND emp.CTR_ID = ctr.CTR_ID;
     
    			UPDATE T_CONTRAT_CTR
    			SET CTR_MONTANT_CONSOMME = (CTR_MONTANT_CONSOMME + @MONTANT_ACT)
    			WHERE CTR_ID = @CTR_ID_;
    		END;
    END; $$
    DELIMITER ;
    #1415 - Not allowed to return a result set from a trigger
    Avez vous une idée ?

    @+

Discussions similaires

  1. Erreur de syntaxe TRIGGER
    Par Blocks dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/02/2011, 05h24
  2. [MySQL] MySQL: erreur syntax création de trigger
    Par hammag dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/05/2009, 12h30
  3. Problème de syntaxe sur un TRIGGER (erreur 1064)
    Par Tchupacabra dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 08/04/2009, 14h47
  4. Erreur de syntaxe sur un trigger
    Par mmahouac dans le forum Développement
    Réponses: 1
    Dernier message: 07/04/2009, 17h15
  5. Erreur de syntaxe dans un trigger
    Par bastiii dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 10/09/2008, 08h47

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