Preciso de ajuda com Triggers e Procedures

Delphi

17/06/2012

Olá pessoal!

Tenho uma tabela de código de barras com o nome EAN que possui os seguintes campos (produto, codbarras, sequencia).
Criei uma procedure que ordena o número do campo da sequencia deixando sempre em ordem crescente (1,2,3,4,5,...).
Estou chamando essa procedure em um trigger que criei na tabela EAN, veja:

CREATE DEFINER = root@localhost TRIGGER `ean_after_del_tr` AFTER DELETE ON `ean`
FOR EACH ROW
BEGIN
CALL sp_ordenaean(OLD.produto);
END;

Quando vou fazer o teste, é apresentado a seguinte mensagem: Cant update table ean in stored function/trigger because it is already used by statament which invoked this stored function/trigger.

Mas quando excluo o trigger e faço o teste, sem usar o trigger, a procedure funciona perfeitamente.
Alguém poderia me dar uma ajuda?
Segue abaixo o código da procedure:

CREATE DEFINER = root@localhost PROCEDURE `sp_ordenaean`(
IN prod INTEGER(11)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE cnt INT DEFAULT 1;
DECLARE barra char(15);

DECLARE eanprod CURSOR FOR (
select codbarras from ean
where produto = prod order by sequencia
);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN eanprod;

REPEAT
FETCH eanprod INTO barra;
if not done then
update ean set sequencia = cnt where produto = prod and codbarras = barra;
set cnt = cnt + 1;
end if;
UNTIL done END REPEAT;

CLOSE eanprod;
END;

Agradeço desde já qualquer ajuda.
Vagner Almeida

Vagner Almeida

Curtidas 0
POSTAR