Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trigger MYSQL

16 octobre 2018 à 14:50:17

Bonjour,

Je suis au pied du mur avec l'ajout d'un trigger à ma table Mysql ce dit que j'ai une erreur au niveau d'une déclaration de variable qui doit récupérer le résultat d'une requête.

Merci

DELIMITER |
CREATE TRIGGER after_insert_event AFTER INSERT
ON evenement FOR EACH ROW
BEGIN
IF NEW.id_statue = 1
    THEN
        DECLARE nbPers int;
            SET nbPers = (SELECT count(*) as nb FROM `poste_secours` WHERE index_event_day = NEW.index_event_day);

            IF @nbPers > 0 
                THEN
                DECLARE v_idPers int(11);
                    DECLARE v_DebCrenaux, v_FinCrenaux datetime;
                    DECLARE v_i INT DEFAULT 1;
                    
                DECLARE listPers CURSOR FOR
            SELECT DISTINCT id_personnel, DebCrenaux, FinCrenaux FROM `poste_secours` WHERE index_event_day = NEW.index_event_day;
                    
                    OPEN listPers;
                    FETCH listPers INTO v_idPers, v_DebCrenaux, v_FinCrenaux;
                    
                    WHILE v_i <= nbPers DO
INSERT INTO `poste_secours`(`id_evenement`, `index_event_day`, `id_personnel`, `id_fonction`, `id_situation`, `DebCrenaux`, `FinCrenaux`) VALUES (NEW.id, NEW.index_event_day, v_idPers, 1, 2, v_DebCrenaux, v_FinCrenaux);

                        SET v_i = v_i + 1; 
                    END WHILE;
                    
                CLOSE listPers;
           END IF;
           
    END IF; 
   
END|
DELIMITER ;
  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2018 à 21:26:35

Salut

Tu déclare nbPers comme un INT sauf que tu veut lui affecter ta requête donc pas possible

dans ce que tu fait nbPers ne contient pas le résultat de la requête mais la requête

  • Partager sur Facebook
  • Partager sur Twitter
La fainéantise est un vilain défaut
17 octobre 2018 à 22:42:41

Salut j'ai réussi a trouver mon erreur en faite il fallait déclarer toute les variable au début, en suite nbPers ne devais pas être un INT mais INTEGER et aussi plus loin sur mon test je l'appel avec un @ devant
  • Partager sur Facebook
  • Partager sur Twitter