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:
TRIGGER AFTER INSER na tabela destino:
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
Curtidas 0