Voici une solution de travail pour obtenir quelque chose de proche de ce que vous demandez :
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
);
INSERT INTO foo ( ts ) VALUES ( now() );
MAIS (et c'est un gros mais ) ici on convertit uuid
à une string
cela signifie que l'index lui-même sera beaucoup plus cher qu'un nombre ou un vrai uuid
.
Dans cet article, vous pouvez trouver une bonne explication :
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439
Autant que je sache, uuid
de Postgres utilise des traits d'union même si vous essayez de les supprimer :
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);
INSERT INTO foo ( ts ) VALUES ( now() );
L'exemple ci-dessus fonctionne très bien dans Postgres 9.6, mais lorsque nous retournons à uuid
les traits d'union sont rajoutés.