PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak generować UUID bez myślników

Oto działające rozwiązanie pozwalające osiągnąć coś zbliżonego do tego, o co prosisz:

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

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

ALE (i jest to duże, ale ) tutaj konwertujemy uuid do string oznacza to, że sam indeks będzie znacznie droższy niż liczba lub rzeczywisty uuid .

W tym artykule znajdziesz dobre wyjaśnienie:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

O ile wiem, uuid Postgresa używa myślników, nawet jeśli próbujesz je usunąć:

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

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

Powyższy przykład działa dobrze w Postgresie 9.6, ale kiedy rzucimy z powrotem do uuid myślniki są dodawane z powrotem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. x to procedura, użyj połączenia, gdy już używam połączenia

  2. Wbudowane w Postgresql polecenie COPY z zapytaniem sparametryzowanym

  3. Błąd pgAdmin - relacja [nazwa funkcji/Widoki/Funkcje wyzwalania] nie istnieje

  4. Spring Managed Bean Injection w klasie implementującej RowMapper

  5. Jak porównać dwie tabele w postgresie