[firebase-br] Chave primaria Guid
Marcelo - MK Softwares
marcelo em mksoftwares.com.br
Sexta Março 12 15:57:09 -03 2021
Aqui usamos C# e para resolver os problemas com guid, criamos esse
domain, e funciona bem tranquilo.
CREATE DOMAIN UUID AS CHAR(16) CHARACTER SET OCTETS COLLATE OCTETS;
Em 12/03/2021 15:44, Carlos Wilson via lista 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.
>
Mais detalhes sobre a lista de discussão lista