1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| DELIMITER $$
CREATE TRIGGER after_insert_bon_de_livraison AFTER INSERT
ON bon_de_livraison FOR EACH ROW
BEGIN
DECLARE v_code_bl VARCHAR(8);
DECLARE nbre_num_attribuer VARCHAR(8);
-- Détermination du nombre de ligne enregistrée
SELECT COUNT(CODE_BL) INTO nbre_num_attribuer FROM bon_de_livraison;
-- S'il n'y a pas aucun numéro attribué le premier numéro d'office est 'BL-00001'
IF nbre_num_attribuer = 0 THEN
SET v_code_bl = 'BL-00001';
-- Dans le cas contraire
ELSE
-- Détermination du plus grand numéro attribué --
SELECT MAX(RIGHT(CODE_BL,CHAR_LENGTH(CODE_BL)-3)+1) INTO nbre_num_attribuer FROM bon_de_livraison;
-- Attribution du nouveau numéro --
SET v_code_bl = CONCAT('BL-', REPEAT('0', 5 - CHAR_LENGTH(nbre_num_attribuer)), nbre_num_attribuer );
END IF;
UPDATE bon_de_livraison SET CODE_BL = v_code_bl WHERE NUM_BL = NEW.NUM_BL;
END $$
DELIMITER ; |
Partager