Jump to content

Douglas .A

Members
  • Content count

    6
  • Joined

  • Last visited

Community Reputation

0 Comum

About Douglas .A

Contato

  1. Douglas .A

    Solução alternativa erro #1442 em trigger after update

    Me resta isso mesmo. A solução proposta então será: 1. Mantenho a TRIGGER pra inserir na tabelabackup (cópia) da linha toda vez que ela receber a atualização específica. 2. Adiciono um evento pra apagar na tabela1 todas as linhas que já estão na tabelabackup.
  2. Douglas .A

    Solução alternativa erro #1442 em trigger after update

    Vou tentar melhorar a explicação, @Motta: O DISPARADOR para iniciar tudo é quando a tabela1 recebe um UPDATE vindo de uma aplicação. Isso eu não posso mudar. É o único evento no qual tenho como referência para desencadear os demais. Vou exemplificar: O usuário finalizou a sessão, logo, o campo 'SessaoFinalizada' da tabela1 é preenhcido. Sendo assim, a tabela1 recebe uma sql UPDATE; (É necessário atualizar a linha antes) Após essa UPDATE, eu não preciso mais dessa linha na tabela1; Preciso inserir essa linha na tabelabackup; (Preciso manter o histórico de sessões do usuário) Em seguida apagar essa linha da tabela1; (Para esvaziar sessões fechadas e liberar espaço nessa tabela)
  3. Douglas .A

    Solução alternativa erro #1442 em trigger after update

    Você quis dizer: Alterar a trigger AFTER UPDATE para apagar a linha na tabela1?
  4. Douglas .A

    Solução alternativa erro #1442 em trigger after update

    Sim, mas preciso manter uma cópia da linha inteira na tabela backup e apagar na tabela1. A questão é que o banco não aceita durante o UPDATE da tabela1, fazer um delete nessa mesma tabela. A ordem em que os fatos ocorrem é: 1. Update tabela 1; (sempre após esse evento) 2. Insert tabelabackup; (copiar a linha atualizada no item 1 para tabelabackup) 3. Delete tabela 1; (apagar a linha atualizada no item 1)
  5. 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
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.