Me gustaría crear un disparador que contar el número de filas con un id específico (id_ort).
Si se encuentra más de 5 filas, necesito incremento de una variable.

Gatillo Sintaxis

BEGIN
DECLARE nb INT;
DECLARE nba INT;

SET nba =0;


SET NEW.`VPLS_ID_NodeB` = CONCAT("21100", LPAD(NEW.`VPLS_ID_NodeB`,4,0));


SET nb = (SELECT COUNT(DISTINCT(`VPLS_ID_aggregation`)) FROM `VPLS_nodeB` WHERE `id_ORT` = NEW.`id_ORT`);

IF(nb > 5) THEN
SET nba = nb + 1;
ELSE
SET nba = nb;
END IF;


SET NEW.`VPLS_ID_aggregation` = CONCAT("21188", LPAD(NEW.`id_ORT`,2,0), LPAD(nba,2,0));
END

Sin embargo, hay un error… aunque he de menos de 5 filas, el var se incrementa cada vez.

Alguna idea? Tal vez es un problema de sintaxis…

Muchas gracias!

InformationsquelleAutor Franquis | 2011-03-11

1 Comentario

  1. 4

    probablemente olvidó especificar un delimitador también he hecho un par de cambios se puede ver

    delimiter #
    
    create trigger VPLS_nodeB_before_ins_trig before insert on VPLS_nodeB
    for each row
    
    BEGIN
    DECLARE nb INT default 0;
    DECLARE nba INT default 0;
    
    SET NEW.VPLS_ID_NodeB = CONCAT('21100', LPAD(NEW.VPLS_ID_NodeB,4,0));
    SET nb = (SELECT COUNT(DISTINCT(VPLS_ID_aggregation)) FROM VPLS_nodeB WHERE id_ORT = NEW.id_ORT);
    
    IF(nb > 5) THEN
        SET nba = nb + 1;
    ELSE
        SET nba = nb;
    END IF;
    
    SET NEW.VPLS_ID_aggregation = CONCAT('21188', LPAD(NEW.id_ORT,2,0), LPAD(nba,2,0));
    
    END#
    
    delimiter ;
    • En realidad, la que se especifica un delimitador. He probado con los cambios, pero aún no funciona 🙁 Gracias de todos modos ^^

Dejar respuesta

Please enter your comment!
Please enter your name here