PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come generare uuid senza trattini

Ecco una soluzione funzionante per ottenere qualcosa di simile a quello che chiedi:

CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
); 

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

MA (ed è un grande ma ) qui convertiamo uuid a una string ciò significa che l'indice stesso sarà molto più costoso di un numero o di un vero uuid .

In questo articolo puoi trovare una buona spiegazione:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Per quanto ne so, uuid di Postgres usa i trattini anche se provi a rimuoverli:

CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);

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

L'esempio sopra funziona perfettamente in Postgres 9.6, ma quando torniamo a uuid i trattini vengono aggiunti di nuovo.