sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo generar uuids sin guiones

Aquí hay una solución de trabajo para lograr algo cercano a lo que pide:

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

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

PERO (y es un gran pero ) aquí convertimos uuid a una string eso significa que el índice en sí será mucho más caro que un número o un uuid real .

En este artículo puedes encontrar una buena explicación:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Hasta donde yo sé, el uuid de Postgres usa guiones incluso si intenta eliminarlos:

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

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

El ejemplo anterior funciona bien en Postgres 9.6, pero cuando volvemos a uuid los guiones se vuelven a agregar.