[firebase-br] Chave primaria Guid

Gladiston Santana gladiston em vidy.com.br
Segunda Março 15 10:24:04 -03 2021


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.


Mais detalhes sobre a lista de discussão lista