Solução alternativa erro 1442 em trigger after update

02/03/2018

0

Senhores(as),
Há tempos, e depois de muitas pesquisas, ainda estou com o problema em aberto:

1. Ao atualizar uma coluna de uma determinada linha de uma tabela,

2. Mover ou copiar essa linha para outra tabela (Ex.: tableBackup), e APAGAR essa linha na tabela atual.



Estou usando trigger AFTER UPDATE na tabela que é atualizada para copiar a linha para outra tabela e funciona.

Contudo, na "tabelaBackup" que recebe a linha, eu usei trigger AFTER INSERT para apagar a linha na tabela de origem e não funciona:

-- O erro: #1442 - Can''''''''''''''''t update table ''''''''''''''''produtos'''''''''''''''' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.



Eu li que não é possível executar dois comandos de alteração na mesma tabela ''''''''''''''''aberta'''''''''''''''', é o que o erro acima diz.

Alguém tem uma solução ou ajuda?

Agradeço.



TRIGGER AFTER UPDATE na tabela origem:

CREATE TRIGGER `Copiar` AFTER UPDATE ON `tabela1`
FOR EACH ROW BEGIN
IF NEW.a IS NOT NULL THEN
		SET @ID = NEW.`id`;
		INSERT INTO tabelaBackup SELECT * FROM tabela1 WHERE `id`= @ID AND `a` IS NOT NULL;
END IF;
END


TRIGGER AFTER INSER na tabela destino:

CREATE TRIGGER `Apagar` AFTER INSERT ON `tabelabackup`
FOR EACH ROW BEGIN
	DELETE FROM tabela1 WHERE `id` = @ID AND `a` IS NOT NULL;
END
Douglas Silva

Douglas Silva

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar