Fórum Ajuda com gatilho #425390
03/10/2012
0
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
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
Curtir tópico
+ 0
Responder
Posts
04/10/2012
William
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.
Análise com calma senão existe outra possibilidade de montar esse gatilho.
Responder
Gostei + 0
04/10/2012
Alisson Santos
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)