Ajuda com gatilho

MySQL

03/10/2012

Olá pessoal!

Tenho duas tabelas, Cabeçado de Cupom (cupomcab01) e Itens do Cupom (cupomitens01).
Criei um gatilho para quando setasse o campo cancelado na tabela cupomitens, voltasse a quantidade para a tabela estoque.
Esse gatilho eu testei diretamente na tabela cupomitens e esta funcionando direitinho.

Dai, criei outro gatilho, mas na tabela cupomcab para desfazer todas as gravações feitas no banco, inclusive setar o campo cancelado da tabela cupomitens.

Mas esse danadinho está dando o seguinte erro:
"Can't update table 'cupomcab01' is stored function/trigger because it is already used by statement which invocked this stored function/trigger."

Segue abaixo o script:

CREATE DEFINER = 'root'@'localhost' TRIGGER `cupomcab01_BU` BEFORE UPDATE ON `cupomcab01`
FOR EACH ROW
BEGIN
set NEW.replica = ifnull( NEW.replica , 'S' );

if NEW.usuariocanc is not null then

update cupomitens01 set cancelado = 'S' where cupomcab = OLD.codigo;
delete from ctareceber01 where cupomcab = OLD.codigo;
delete from caixafluxo01 where cupomcab = OLD.codigo;

end if;

END;


Agradeço desde já qualuqer ajuda
Vagner Almeida

Vagner Almeida

Curtidas 0

Respostas

William

William

03/10/2012

Colega aparentemente esse erro está sendo dispardo pq vc está tentando executar um update na tabela dentro do gatilho de update da própria tabela.

Análise com calma senão existe outra possibilidade de montar esse gatilho.
GOSTEI 0
Alisson Santos

Alisson Santos

03/10/2012

Sempre quando é criado um gatilho você tem que informar se ele vai ser feito no insert, update ou delete, o erro é devido você não estar dando um update, por esse motivo ele não está sendo disparado.
GOSTEI 0
POSTAR