Odpowiedź Craig Ringer jest poprawna. Oto trochę więcej informacji na temat Postgres 9.1 i nowszych…
Czy dostępne jest rozszerzenie?
Rozszerzenie można zainstalować tylko wtedy, gdy zostało ono już zbudowane do instalacji Postgres ( klaster w języku Lingo Postgres). Na przykład znalazłem rozszerzenie uuid-ossp zawarte w ramach instalatora dla systemu Mac OS X udostępnionego przez EnterpriseDB.com. Dostępne może być dowolne z kilkudziesięciu rozszerzeń .
Aby sprawdzić, czy rozszerzenie uuid-ossp jest dostępne w klastrze Postgres, uruchom ten kod SQL, aby wysłać zapytanie do pg_available_extensions
katalogu systemowego:
SELECT * FROM pg_available_extensions;
Zainstaluj rozszerzenie
Aby zainstalować to rozszerzenie związane z UUID , użyj polecenia CREATE EXTENSION, jak widać w tym SQL:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Uwaga: Znalazłem wymagane znaki ZNAK QUOTATION wokół nazwy rozszerzenia, mimo że dokumentacja jest wręcz przeciwna.
Komitet ds. Standardów SQL lub zespół Postgres wybrał dla tego polecenia nieparzystą nazwę. Moim zdaniem powinni wybrać coś takiego jak „ZAINSTALUJ PRZEDŁUŻENIE” lub „UŻYJ PRZEDŁUŻENIA”.
Sprawdź instalację
Możesz sprawdzić, czy rozszerzenie zostało pomyślnie zainstalowane w wybranej bazie danych, uruchamiając ten kod SQL w celu przeszukania pg_extension
katalogu systemowego:
SELECT * FROM pg_extension;
UUID jako wartość domyślna
Aby uzyskać więcej informacji, zobacz pytanie: Wartość domyślna dla kolumny UUID w Postgres
The Old Way
Powyższe informacje wykorzystują nową funkcję Rozszerzeń dodaną do Postgres 9.1. W poprzednich wersjach musieliśmy znaleźć i uruchomić skrypt w pliku .sql . Dodano funkcję Rozszerzenia, aby ułatwić instalację, zamieniając nieco więcej pracy dla twórcy rozszerzenia na mniej pracy ze strony użytkownika / konsumenta rozszerzenia. Zobacz mój post na blogu, aby uzyskać więcej dyskusji.
Rodzaje UUID
Nawiasem mówiąc, kod w pytaniu wywołuje funkcję uuid_generate_v4()
. Generuje to typ znany jako Wersja 4, w której prawie wszystkie 128 bitów jest generowanych losowo. Chociaż jest to odpowiednie w przypadku ograniczonego użycia w mniejszym zestawie wierszy, jeśli chcesz praktycznie wyeliminować jakąkolwiek możliwość kolizji, użyj innej „wersji” UUID.
Na przykład oryginalna wersja 1 łączy adres MAC komputera-hosta z bieżącą datą i godziną i dowolną liczbą, prawdopodobieństwo kolizji jest praktycznie zerowe.
Aby uzyskać więcej dyskusji, zobacz moją odpowiedź na powiązane pytanie.