PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да генерирате uuid без тирета

Ето работещо решение за постигане на нещо близко до това, което искате:

CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
); 

INSERT INTO foo ( ts ) VALUES ( now() );

НО (и това е голямо но ) тук преобразуваме uuid към string това означава, че самият индекс ще бъде много по-скъп от число или реален uuid .

В тази статия можете да намерите добро обяснение:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Доколкото знам, uuid на Postgres използва тирета, дори ако се опитате да ги премахнете:

CREATE TABLE foo (
  ts TIMESTAMP WITH TIME ZONE,
  queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);

INSERT INTO foo ( ts ) VALUES ( now() );

Примерът по-горе работи добре в Postgres 9.6, но когато прехвърляме обратно към uuid тирета се добавят обратно.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете разликата на друго поле между първия и последния времеви отпечатъци на групирането

  2. Как да отмените завъртане на таблица в PostgreSQL

  3. Обяснена команда за PostgreSQL VALUES

  4. Как да използвате pandas за извършване на upsert в SqlAlchemy

  5. Как да промените локала при форматиране на числа в PostgreSQL