Duplicação em FR FONTEDADOS
De Wiki.Softwell
Se por algum motivo as FK entre FR_FORMULARIO e FR_FONTEDADOS não existir pode causar duplicação de fonte de dados durante a importação de formulários, este artigo mostra como corrigir e eliminar definitivamente tal problema.
Detectando
Execute o SELECT abaixo, veja se algum registro é retornado, caso isso aconteça há fonte de dados duplicadas em seu sistema.
select FR_FORMULARIO.FRM_CODIGO, FR_FORMULARIO.FRM_DESCRICAO, COUNT(FR_FONTEDADOS.FRM_CODIGO) AS QTD from FR_FORMULARIO inner join FR_FONTEDADOS on (FR_FORMULARIO.FRM_CODIGO = FR_FONTEDADOS.FRM_CODIGO) group by FR_FORMULARIO.FRM_CODIGO, FR_FORMULARIO.FRM_DESCRICAO having count(FR_FONTEDADOS.FRM_CODIGO) > 1 order by 3 desc
Corrigindo
Para cada formulário retornado no SELECT anterior execute o SELECT abaixo e remova os regsitros duplicados deixando apenas 1.
select * from FR_FONTEDADOS where (FRM_CODIGO = :FRM_CODIGO)
Eliminando o problema
- Criação da Foreingn Key - Crie uma FK entre FR_FONTEDADOS.FRM_CODIGO e FR_FORMULARIO.FRM_CODIGO com CASCADE;
- DDL PostgreSQL
alter table FR_FONTEDADOS
add constraint FR_FONTEDADOS_FORMULARIO_FK foreign key (FRM_CODIGO)
references FR_FORMULARIO (FRM_CODIGO) match simple
on update no action on delete cascade;
- Unique contraint - Crie uma UNIQUE no campo FRM_CODIGO na tabela FR_FONTEDADOS;
- DDL PostgreSQL
alter table FR_FONTEDADOS add constraint UNQ_FR_FONTEDADOS_FRM_CODIGO unique(FRM_CODIGO);
