Trigger de comparaison de dates
Bnjr;
j'aimerais créer un 'trigger before insert' dans lequel je récupère par un select les titres de congés d'un fonctionnaire de ma table 'titrcng' , je veux par la suite comparer la nouvelle ligne à insérer avec toutes les lignes obtenues par le select , en fait , je veux vérifier que le titre de congé à insérer ne chevauche pas avec les titres du même fonctionnaire qui sont déjà dans la base de données , pour cela j'ai créé le trigger suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| delimiter //
CREATE TRIGGER NON_OVERLAP BEFORE INSERT ON `titrcng`
FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE DATDEB DATE;
DECLARE DATFIN DATE ;
DECLARE OVERLAP_CURSOR CURSOR FOR SELECT 'DatDeb' as DATDEB ,'DatFin' as DATFIN FROM titrcng WHERE 'NSS'=NEW.NSS ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN OVERLAP_CURSOR;
read_loop:LOOP
FETCH OVERLAP_CURSOR INTO DATDEB ,DATFIN ;
IF done THEN LEAVE read_loop;
END IF ;
IF (DATDEB <= NEW.DatFin AND NEW.DatDeb <= DATFIN ) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = `Les congés ne doivent pas se chevaucher`;
END IF;
END LOOP;
CLOSE OVERLAP_CURSOR;
END//
delimiter ; |
le trigger est effectivement créé , les triggers sont activés (SET GLOBAL event_scheduler=ON), mais quand j'insère une nouvelle ligne qui ne respect pas la condition évoquée dans le trigger , la ligne est quand même insérée ????
quelq'un peut m'aider svp?