PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara menghasilkan uuid tanpa tanda hubung

Berikut adalah solusi yang berfungsi untuk mencapai sesuatu yang mendekati apa yang Anda minta:

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

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

TAPI (dan ini adalah besar tapi ) di sini kita mengonversi uuid ke string itu berarti indeks itu sendiri akan jauh lebih mahal daripada angka atau uuid yang sebenarnya .

Dalam artikel ini Anda dapat menemukan penjelasan yang bagus:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Sejauh yang saya tahu, uuid Postgres' menggunakan tanda hubung meskipun Anda mencoba menghapusnya:

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

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

Contoh di atas berfungsi dengan baik di Postgres 9.6, tetapi ketika kita melemparkan kembali ke uuid tanda hubung ditambahkan kembali.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Variabel yang ditentukan pengguna di PostgreSQL

  2. PostgreSQL/JDBC dan TIMESTAMP vs. TIMESTAMPTZ

  3. SQLAlchemy:memfilter nilai yang disimpan dalam daftar bersarang dari bidang JSONB

  4. Dapatkan nilai bukan nol minimum di beberapa kolom

  5. Cara masuk ke postgresql db - Setelah sesi membunuh (untuk menyalin basis data)