Solução alternativa erro #1442 em trigger after update
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
Discussão (9)
Carregando comentários...