PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como gerar uuids sem traços


Aqui está uma solução de trabalho para alcançar algo próximo ao que você pede:
CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
); 

INSERT INTO foo ( ts ) VALUES ( now() );

MAS (e é um grande mas ) aqui convertemos uuid para uma string isso significa que o próprio índice será muito mais caro do que um número ou um uuid real .

Neste artigo você pode encontrar uma boa explicação:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Até onde eu sei, o uuid do Postgres usa hífens mesmo se você tentar removê-los:
CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);

INSERT INTO foo ( ts ) VALUES ( now() );

O exemplo acima funciona bem no Postgres 9.6, mas quando convertemos de volta para uuid os hífens são adicionados de volta.