Como apagar registros duplicados na TOP_FIELD

No artigo de hoje, vamos abordar em como apagar registros duplicados da tabela TOP_FIELD do Protheus.

A dica de hoje foi enviada pelo grande Kleber Santos ( LinkedIn ). No caso, a tabela TOP_FIELD, ela é interna do sistema.

 

Mas pode acontecer, dessa tabela apresentar registros duplicados.

 

Para isso, pode se utilizar algum comando para exclusão direto no banco de dados.

 

Ressaltando pessoal, que antes de executarem, realize testes numa base se homologação. E lembrem-se que não é recomendado manipular diretamente informações no banco de dados, somente algumas exceções.

 

Abaixo então, a query desenvolvida, onde é feito uma busca dos registros apagados e em seguida é feito a exclusão deles.

WITH CTE_Duplicates AS (
  SELECT *,
         ROW_NUMBER() OVER (
           PARTITION BY FIELD_TABLE, FIELD_NAME, FIELD_TYPE, FIELD_PREC, FIELD_DEC
           ORDER BY (SELECT NULL)  /* não importa a ordem, só queremos um por grupo */
         ) AS rn
  FROM TOP_FIELD
)
DELETE FROM CTE_Duplicates
WHERE rn > 1;

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação