Bonjour à tous. J'ai un problème au niveau de la syntaxe d'un déclencheur MySQL...
En effet je vous décris le problèmes :
Avant d'insérer une absence (congés) on veut vérifier :
- Si la date de début est bien avant la date de fin
- Compter le nombre de jour en décomptant les jours fermés inclus dans la table jourFerme
- Réaliser l'insertion
Cependant MySQL me retourne une erreur 1064... Et j'avoue que je débute dans les triggers...
Voici le code du trigger :
En vous remerciant par avance de votre aide... A très vite, merci à tous.
Modifié par TagadaGeo (20 May 2010 - 14:06)
En effet je vous décris le problèmes :
Avant d'insérer une absence (congés) on veut vérifier :
- Si la date de début est bien avant la date de fin
- Compter le nombre de jour en décomptant les jours fermés inclus dans la table jourFerme
- Réaliser l'insertion
Cependant MySQL me retourne une erreur 1064... Et j'avoue que je débute dans les triggers...
Voici le code du trigger :
delimiter //
Create trigger insertAbs on absence before Insert
FOR EACH ROW
declare @nbJour integer;
declare @nbDiff float;
declare @nbDemiJour float;
Begin
if(New.dateDebut < New.dateFin) then
#On compte le nombre de jour fermé compris entre dateDeb et dateFin
Select @nbJour = count(*) From jourferme where dateJour between New.dateDebut and New.dateFin;
Select @nbDiff = DATEDIFF(Date_Format(New.dateDebut, %Y %m %d), Date_Format(New.dateFin, %Y %m %d));
if(New.demiJourDeb = "am") && (New.demiJourFin = "am") then
Set @nbDemiJour = 0.5;
else if(New.demiJourDeb = "am") && (New.demiJourFin = "pm") then
Set @nbDemiJour = 1.0;
else if(New.demiJourDeb = "pm") && (New.demiJourFin = "pm") then
Set @nbDemiJour = 0.5;
else if(New.demiJourDeb = "pm") && (New.demiJourFin = "am") then
Set @nbDemiJour = 1.0;
end if;
Insert Into absence (dateDebut, dateFin, nbrJour, demiJourDeb, demiJourFin, motif, etat, numEmploye, typeAbs) values(Date_Format(New.dateDebut, %Y %m %d), Date_Format(New.dateFin, %Y %m %d), @nbJour-@nbDiff+@nbDemiJour, New.demiJourDeb, New.demiJourFin, New.motif, New.etat, New.numEmploye, New.typeAbs);
end if;
End//;
delimiter;
En vous remerciant par avance de votre aide... A très vite, merci à tous.
Modifié par TagadaGeo (20 May 2010 - 14:06)