PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment générer des uuids sans tirets

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.