Ir para conteúdo

POWERED BY:

Arquivado

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

sk8sta

Erro ao executar uma trigger!

Recommended Posts

Bom dia pessoal.

 

Criei uma trigger que quando a tabela X tem o campo status alterado, a trigger altera um outro campo da proria tabela X:

 

CREATE TRIGGER set_paid AFTER UPDATE ON tabela_X
FOR EACH ROW
BEGIN
	IF NEW.status = 'C' THEN
		UPDATE tabela_X set paid = '1' where id=NEW.id limit 1;

	IF NEW.status <> 'C' THEN
		UPDATE tabela_X set paid = '0' where id=NEW.id limit 1;

END;

Porem quando executo um update na tabela mudando o campo status o mysql me retorna isso:

 

Mensagens do MySQL : Documentação
#1442 - Can't update table 'tabela_X' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia resumir este código

CREATE TRIGGER set_paid AFTER UPDATE ON tabela_X
FOR EACH ROW
BEGIN
        IF NEW.status = 'C' THEN
                UPDATE tabela_X set paid = '1' where id = NEW.id limit 1;
        ELSE
                UPDATE tabela_X set paid = '0' where id = NEW.id limit 1;

END;

Os muitos erros de SQL podem ser corrigidos por apenas entender o erro que se é apresentado.

Você consegue traduzir isto: ??

 

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

Não é possível atualizar a tabela 'tabela_X' em função armazenada pois já está declarada... ou armazenada.

 

 

Isto é Você já criou. Toda vez que você for fazer outra alteração, você não usa mais o CREATE, e sim o ALTER.

Tente isso:

 

ALTER TRIGGER set_paid AFTER UPDATE ON tabela_X
FOR EACH ROW
BEGIN
        IF NEW.status = 'C' THEN
                UPDATE tabela_X set paid = '1' where id = NEW.id limit 1;
        ELSE
                UPDATE tabela_X set paid = '0' where id = NEW.id limit 1;

END;

 

Se der erro posta ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, mas não entendi o que você falou.

 

Eu não tinha nenhuma tregger, porisso usei o CREATE, acredito eu que se você não tem nada e quer criar não posso usar o ALTER, não usei o alter pois não queria alterar a trigger. Em questão a tradução eu entendi porem a mensagem de erro achei meio confusa, pelo que entendi, ja existe alguma coisa com o mesmo nome sei la eu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, quando você executou da primeira vez e deu erro ele conseguiu criar a TRIGGER

Agora você ta executando de novo, está dando esse erro pq já está criada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas acho que expressei mal, esse erro acontece quando eu altero um registro na tabela, ai acho que ele tenta executar a triger e da esse erro...

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.