Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiopijama

[Resolvido] Inserir uma nova linha na mesma tabela utilizando tri

Recommended Posts

Bom dia!

 

Eu estou com o seguinte problema. Eu preciso inserir uma linha na mesma tabela que foi inserido um dado, desde que a linha inserida possua um dado específico. Eu fiz a seguinte trigger:

 

DELIMITER |

DROP TRIGGER IF EXISTS atualiza_download |

 

CREATE TRIGGER atualiza_download AFTER INSERT ON selects_checkboxes

FOR EACH ROW

BEGIN

 

IF NEW.Tabela_sel = 'downloads' THEN

INSERT INTO selects_checkboxes (Campo_txf, Tabela_sel, Campo_tabela_sel) VALUES (NEW.Campo_txf, 'usuarios_ftp', 'Departamento_chb');

END IF;

 

END;

|

 

DELIMITER ;

 

Ele cria a trigger normal, só que está retornando o seguinte erro quando eu insiro um dado com o campo 'downloads' na coluna Tabela_sel:

 

"Can't update table 'selects_checkboxes' in stored function/trigger because it is already used by statement which invoked this stored function/trigger."

 

Eu andei pesquisando, e parece que o mysql não aceita que uma trigger insira uma nova linha na mesma tabela que foi modificada (parece que funciona se for fazer update, mas não achei nada para insert).

 

Eu gostaria de saber se caso isso realmente não funcione, de que forma eu poderia inserir esta linha na mesma tabela ou se caso funcione, o que estou fazendo de errado?

 

OBS.: eu utilizei BEFORE no lugar do AFTER e dá o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que poderia ser criada uma chamada recursiva infinita (não é o caso) mas daí o erro.

 

Melhor tratar isto na camada de aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade Motta. Mas você não acha uma sacanagem que o mysql não permita que os desenvolvedores destruam com o servidor? hehehe

 

Brincadeiras a parte, eu já consegui resolver o problema aqui. Por sorte, a aplicação alimenta uma outra tabela com o mesmo dado da coluna Campo_txf, que eu utilizei para fazer o trigger. Daí eu redirecionei o trigger pra esta tabela.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
É verdade Motta. Mas você não acha uma sacanagem que o mysql não permita que os desenvolvedores destruam com o servidor? hehehe

 

Servidor após fim do insert ...

 

68017710_123de4638c_z.jpg?zz=1

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas informe quando resolver que algum moderador marcará

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.