Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2011, 11h22   #1
Membre habitué
 
Étudiant
Inscription : avril 2008
Messages : 275
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 275
Points : 139
Points : 139
Par défaut Erreur de syntaxe d'un trigger

Bonjour,

j'essaye de faire un trigger sous MySQL :
Code :
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 :
Citation:
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.
@+
Tidus159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 20h24   #2
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Pérou

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 3
Points : 3
Points : 3
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 :
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 : $
franzsc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 08h27   #3
Membre habitué
 
Étudiant
Inscription : avril 2008
Messages : 275
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 275
Points : 139
Points : 139
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 :
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 ;
Citation:
#1415 - Not allowed to return a result set from a trigger
Avez vous une idée ?

@+
Tidus159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h07.


 
 
 
 
Partenaires

Hébergement Web