Hier is een werkende oplossing om iets te bereiken dat dicht in de buurt komt van wat u vraagt:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
);
INSERT INTO foo ( ts ) VALUES ( now() );
MAAR (en het is een grote maar ) hier converteren we uuid
naar een string
dat betekent dat de index zelf veel duurder zal zijn dan een getal of een echte uuid
.
In dit artikel vind je een goede uitleg:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439
Voor zover ik weet, Postgres' uuid
gebruikt koppeltekens, zelfs als u ze probeert te verwijderen:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);
INSERT INTO foo ( ts ) VALUES ( now() );
Het bovenstaande voorbeeld werkt prima in Postgres 9.6, maar als we teruggaan naar uuid
koppeltekens worden terug toegevoegd.