Her er en fungerende løsning til at opnå noget tæt på det, du spørger om:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
);
INSERT INTO foo ( ts ) VALUES ( now() );
MEN (og det er et stort men ) her konverterer vi uuid
til en string
det betyder, at selve indekset vil være meget dyrere end et tal eller en rigtig uuid
.
I denne artikel kan du finde en god forklaring:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439
Så vidt jeg ved, Postgres' uuid
bruger bindestreger, selvom du prøver at fjerne dem:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);
INSERT INTO foo ( ts ) VALUES ( now() );
Eksemplet ovenfor fungerer fint i Postgres 9.6, men når vi kaster tilbage til uuid
bindestreger tilføjes tilbage.