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.