PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách tạo uuids không có dấu gạch ngang

Đây là một giải pháp hiệu quả để đạt được điều gì đó gần với những gì bạn yêu cầu:

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

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

NHƯNG (và nó là một lớn nhưng ) ở đây chúng tôi chuyển đổi uuid thành một chuỗi string điều đó có nghĩa là bản thân chỉ mục sẽ đắt hơn nhiều so với một số hoặc một uuid thực .

Trong bài viết này, bạn có thể tìm thấy lời giải thích hay:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

Theo như tôi biết, uuid của Postgres sử dụng dấu gạch ngang ngay cả khi bạn cố gắng xóa chúng:

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

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

Ví dụ trên hoạt động tốt trong Postgres 9.6, nhưng khi chúng tôi truyền trở lại uuid dấu gạch nối được thêm lại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao chép cấu trúc bảng vào bảng mới

  2. Sự khác biệt giữa văn bản và varchar (ký tự thay đổi)

  3. tổng và tạo chuỗi không hoạt động trong postgresql

  4. Postgres:Ràng buộc chỉ bằng kiểm tra CHÈN

  5. Gỡ lỗi chương trình sử dụng SIGINT với gdb