Citação:
Eu ia perguntar se isso gerava algum erro na engine do MySQL, mas creio que não chega a gerar pois ele não deve encontrar nada pra deletar, e sinceramente acho que ele não vai te deixar executar uma outra operação no row com a operação atual não-"oficialmente" terminada, mas vc pode tentar para ver realmente se não ...
O que acontece com o statement acima é que quando vc diz "WHERE OLD.RadAcctId" vc está referenciando um valor e não a coluna RadAcctId, o certo seria vc pôr ... DELETE FROM radacct_1 WHERE RadAcctId = NEW.RadAcctId;
Ele não gera erro e a sua indicação de DELETE é o que eu fiz primeiro que também não funcionou. Ele copia o registro mas não apaga ele da primeira tabela. Tentei 1001 opções usando o NEW e o OLD em ambos os lados. Tentei também um DELETE dos campos que não eram nulos naquela coluna mas também não surtiu resultado algum.
Citação:
Poderia te dar uma sugestão que também tenho 99,9% de certeza que ele não vai te deixar executar que seria criar um trigger no INSERT na tabela radacct para DELETE FROM radacct_1 WHERE RadAcctId = NEW.RadAcctId AND AccStopTime IS NOT NULL, pois acho que apesar de estar "oficialmente" em operações diferentes a primeira row ainda vai estar locked, mas como a primeira operação é um UPDATE vc pode tentar ... Eu sou tipo Tomé, só acredito que não dá certo, quando vejo o erro, rs ...
O problema é que o INSERT quando é feito nessa tabela sempre terá o AcctStopTime como NULL. Este só será modificado quando houver um UPDATE. Obrigatóriamente em todos os UPDATE esse campo é alterado. Se em um novo INSERT na tabela eu pudesse remover os campos que tem o AcctStopTime não nulos seria interessante mas acho que a rotina só permite mexer na linha que está sendo inserida/corrigida.
Citação:
Ou vc poderia criar um campo na tabela radacct_1 para sinalizar que aquele registro seria um candidato à deleção e à sua conveniência passar um script de deleção nesses registros ... mas acho que essa segunda opção não é tão elegante ...
Falow,
Feliz Ano Novo ...
Esta última realmente é impraticável já que a tabela é de um programa de autenticação de clientes (FreeRadius) e eu teria que recompilar o módulo MySQL dele para que ele coloque uma nova coluna quando há update na tabela radacct. Sinceramente é muito complexo por meu nível de programação... hahahahahaha...