Câu trả lời của Craig Ringer là chính xác. Dưới đây là một chút thông tin cho Postgres 9.1 trở lên
Có mở rộng không?
Bạn chỉ có thể cài đặt tiện ích mở rộng nếu nó đã được xây dựng để cài đặt Postgres ( cụm của bạn trong biệt ngữ Postgres). Ví dụ: tôi đã tìm thấy tiện ích mở rộng uuid-ossp được bao gồm như một phần của trình cài đặt cho Mac OS X do EnterpriseDB.com cung cấp . Bất kỳ một vài chục phần mở rộng có thể có sẵn.
Để xem phần mở rộng uuid-ossp có sẵn trong cụm Postgres của bạn không, hãy chạy SQL này để truy vấn pg_available_extensions
danh mục hệ thống:
SELECT * FROM pg_available_extensions;
Cài đặt tiện ích mở rộng
Để cài đặt tiện ích mở rộng liên quan đến UUID đó , hãy sử dụng lệnh CREATE EXTENSION như đã thấy trong SQL này:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Chú ý: Tôi thấy các ký tự QUOTATION Mark xung quanh tên mở rộng là bắt buộc, mặc dù tài liệu ngược lại.
Ủy ban tiêu chuẩn SQL hoặc nhóm Postgres đã chọn một tên lẻ cho lệnh đó. Theo suy nghĩ của tôi, họ nên chọn một cái gì đó như "CÀI ĐẶT EXTENSION" hoặc "SỬ DỤNG EXTENSION".
Xác minh cài đặt
Bạn có thể xác minh tiện ích mở rộng đã được cài đặt thành công trong cơ sở dữ liệu mong muốn bằng cách chạy SQL này để truy vấn pg_extension
danh mục hệ thống:
SELECT * FROM pg_extension;
UUID làm giá trị mặc định
Để biết thêm thông tin, hãy xem Câu hỏi: Giá trị mặc định cho cột UUID trong Postgres
Con đường cũ
Thông tin trên sử dụng tính năng Tiện ích mở rộng mới được thêm vào Postgres 9.1. Trong các phiên bản trước, chúng tôi đã phải tìm và chạy một tập lệnh trong tệp .sql . Tính năng Tiện ích mở rộng đã được thêm vào để giúp cài đặt dễ dàng hơn, giao dịch nhiều hơn một chút cho người tạo tiện ích mở rộng để làm việc ít hơn với người dùng / người tiêu dùng tiện ích mở rộng. Xem bài viết trên blog của tôi để thảo luận thêm.
Các loại UUID
Nhân tiện, mã trong Câu hỏi gọi hàm uuid_generate_v4()
. Điều này tạo ra một loại được gọi là Phiên bản 4 trong đó gần như tất cả 128 bit được tạo ngẫu nhiên. Mặc dù điều này tốt cho việc sử dụng hạn chế trên các hàng nhỏ hơn, nhưng nếu bạn muốn loại bỏ hầu như mọi khả năng va chạm, hãy sử dụng một "phiên bản" khác của UUID.
Ví dụ, Phiên bản 1 gốc kết hợp địa chỉ MAC của máy tính chủ với thời gian hiện tại và số tùy ý, cơ hội va chạm thực tế là không.
Để thảo luận thêm, xem Câu trả lời của tôi về Câu hỏi liên quan.