Hier ist eine funktionierende Lösung, um etwas zu erreichen, das dem entspricht, was Sie verlangen:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
);
INSERT INTO foo ( ts ) VALUES ( now() );
ABER (und es ist ein großes Aber ) hier konvertieren wir uuid
zu einem string
das bedeutet, dass der Index selbst viel teurer sein wird als eine Zahl oder eine echte uuid
.
In diesem Artikel finden Sie eine gute Erklärung:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439
Soweit ich weiß, Postgres' uuid
verwendet Bindestriche, auch wenn Sie versuchen, sie zu entfernen:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);
INSERT INTO foo ( ts ) VALUES ( now() );
Das obige Beispiel funktioniert in Postgres 9.6 einwandfrei, aber wenn wir auf uuid
zurücksetzen Bindestriche werden wieder hinzugefügt.