[firebase-br] Chave primaria Guid

Gustavo Novaes gutonovaes19 em gmail.com
Segunda Março 15 12:49:08 -03 2021


Boa tarde,
O assunto me atraiu para aprender. Tomara a solução seja objeto de um
artigo. Abraços.

*Gustavo Novaes *




Em seg., 15 de mar. de 2021 às 10:25, Gladiston Santana via lista <
lista em firebase.com.br> escreveu:

> Olá colega.
>
> Eu trabalho com sistemas multiempresa desde que me conheço por programador.
> O UUID lhe gera unicidade, mas não resolverá seu problema sozinho e pelo
> que entendi voce pretende colocar um prefixo ao UUID para a caracterização
> de filial, ok, não entrarei no mérito da questão, então que voce precisará
> será uma querie assim:
> (...)
>    qry.SQL.Clear;
>    qry.SQL.Add('select CAST(prefixo_empresa||GEN_UUID() as varchar(30)) as
> meu_id_unico from RDB$DATABASE');
>    //qry.SQL.Add('returning  meu_id_unico');
>    qry.Open;
>    Result := qry.FieldbyName('meu_id_unico').AsString;
>
> Só uma sugestão, ao concatenar você terá dificuldades de particionar seus
> dados mais tarde, este é um recurso desejável que alguns bancos de dados
> dão de criar um indice baseado em expressão para separar dados por empresa,
> ano, etc.... o que deixaria o banco de dados mais rapido porque faria
> operações com dados mais relevantes.
>
> Em sex., 12 de mar. de 2021 às 15:47, Carlos Wilson via lista <
> lista em firebase.com.br> escreveu:
>
> > Boa tarde a todos,
> >
> > Atravessei a madrugada pesquisando e não achei solução para o meu
> > problema. Utilizo o Unidac.
> >
> > Devido a tantos problemas com replicação e outros em sincronizar bancos
> > de várias filiais estou tentando migrar minhas PK para GUID
> >
> > depois de estudar em alguns lugares vi que a pk tem que ser criada como
> > Char(16) Octates. Dessa maneira a pk é gravada como bytes binarios e o
> > desempenho fica melhor ao indexar e usar como FK.
> >
> > No delphi fiz essa função para preenchimento da chave.
> >
> > function Tdm.IncUUID: TBytes;
> > var
> >    qry: TUniQuery;
> > begin
> >    qry := TUniQuery.Create(Self);
> >    qry.Connection := DBConn1;
> >    qry.SQL.Clear;
> >    qry.SQL.Add('select GEN_UUID() from RDB$DATABASE');
> >    qry.Open;
> >    Result := qry.Fields[0].AsBytes;
> >    qry.Free;
> > end;
> >
> > Ao fazer o append ele chama essa função e parece que está preenchendo.
> > porém ao dar um post, acontece a excessao:
> >
> > Could not convert variant of type (array byte) into type (integer).
> >
> > Atualizei o Unidac mas o erro persiste, mas não sei mais o que posso
> > fazer. Alguém, por favor, pode me dar uma luz?
> >
> > Grato.
> >
> > --
> > []'s
> > Carlos Wilson
> > Formosystem
> > Informática e Automação Comercial
> >
> >
> > ______________________________________________
> > 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
> >
>
>
> --
> A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
> Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
> na Melhoria Continua.
>
> Em março de2018 migramos com sucesso para a nova versão da ISO 9001.
>
> Somos a única Empresa Brasileira de Engenharia de Laboratórios com
> certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
> Fabricação e Instalação de Laboratórios.
> ______________________________________________
> 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