[firebase-br] having

Luiz Fernando Trevisan luizztrevisan em gmail.com
Quarta Março 30 22:28:30 -03 2022


Comigo aconteceu esse mesmo problema quando ia criar índices únicos assim.

No meu caso era uma tabela que existiam registros duplicados, precisei
fazer o select e apagar eles
Após apagar e fazer o commit da transação, ao tentar criar o índice recebia
a mensagem que existiam registros duplicados
Consegui criar o índice após desconectar todos os usuários da base

A conclusão que cheguei é que, por mais que eu tenha apagado os duplicados,
existiam outras conexões no banco de dados, principalmente transações
abertas que ainda "enxergavam" aqueles registros, já que foram abertas
antes do delete dos duplicados.


Já nas outras vezes que precisei sempre segui essa mesma metodologia de
desconectar todos os usuários.

Algo interessante que notei é o seguinte, se tentava criar o índice e
existiam registros duplicados a mensagem apontava qual era a chave do
registro duplicado... Após apagar eles, com outras transações ativas, a
mensagem passava a ser genérica, existem registros duplicados, mas sem
dizer qual era a chave do registro.
Sendo assim toda vez que a mensagem era genérica, sabia que era por ter
outras conexões ativas.

Espero que isso possa esclarecer o porquê após fazer a desconexão de todos
os usuários conseguiu criar normalmente.
Talvez no seu caso não foram nem outras conexões, mas talvez o ibexpert com
um select aberto ou até mesmo a tabela aberta em uma aba.



Em qua., 30 de mar. de 2022 21:59, José Mauricio Barbisan Zottis via lista <
lista em firebase.com.br> escreveu:

> Boa noite Carlos, O IBEXpert retornava a mensagem que havia registro
> Duplicado.
> Consegui fazendo um ShutDown na base e depois de reerguer a base, o script
> rodou, acho que é um bug do IBEXpert.
>
> Por isso o SQL não aparecia nenhum registro duplicado, pois realmente não
> tinha.
>
> Em qua., 30 de mar. de 2022 às 21:34, Carlos H. Cantu via lista <
> lista em firebase.com.br> escreveu:
>
> > Qual é a mensagem exata de erro apresentada quando você tenta criar a
> > unique
> > key?
> >
> > Qual o resultado e o PLAN do comando abaixo?
> >
> > select C.*
> > from CLI_TELEFONE C
> > where exists(select *
> >              from CLI_TELEFONE C2
> >              where C2.COD_CLIENTE = C.COD_CLIENTE and
> >                    C2.COD_TPFONE = C.COD_TPFONE and
> >                    C2.rdb$db_key <> C.rdb$db_key)
> >
> > []s
> > Carlos H. Cantu
> > eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
> > www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
> >
> > JMBZvl> FB 2.5
> >
> > JMBZvl> Bom dia.
> > JMBZvl> Pessoal, abri uma base nova em um cliente e copiei os dados de
> uma
> > tabela
> > JMBZvl> via script de inserts, mas ao tentar gerar uma chave única da
> erro
> > dizendo
> > JMBZvl> que tem registro duplicado.
> >
> > JMBZvl> alter table CLI_TELEFONE
> > JMBZvl> add constraint UNQ1_CLI_TELEFONE
> > JMBZvl> unique (COD_CLIENTE,COD_TPFONE);
> >
> > JMBZvl> estou tentando identificar qual registro está duplicado usando o
> > comando
> > JMBZvl> having, mas retorna zero
> > JMBZvl> alguém saberia como identificar o registro que está duplicado?
> >
> > JMBZvl> select count(*),
> > JMBZvl>        c.cod_cliente,
> > JMBZvl>        c.cod_tpfone
> > JMBZvl> from cli_telefone C
> > JMBZvl> group by c.cod_cliente,
> > JMBZvl>          c.cod_tpfone
> > having count(*) >> 1
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> > http://www.firebase.com.br/pesquisa_lista.html
> >
>
>
> --
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista