La risposta di Craig Ringer è corretta. Ecco qualche informazione in più per Postgres 9.1 e versioni successive ...
L'estensione è disponibile?
Puoi installare un'estensione solo se è già stata creata per l'installazione di Postgres (il tuo cluster nel gergo di Postgres). Ad esempio, ho trovato l' estensione uuid-ossp inclusa come parte dell'installer per Mac OS X gentilmente fornita da EnterpriseDB.com. È possibile che siano disponibili alcune decine di estensioni .
Per vedere se l' estensione uuid-ossp è disponibile nel cluster Postgres, esegui questo SQL per eseguire una query nel pg_available_extensions
catalogo di sistema:
SELECT * FROM pg_available_extensions;
Installa estensione
Per installare l' estensione relativa a UUID , utilizzare il comando CREATE EXTENSION come mostrato in questo SQL:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Attenzione: ho trovato i caratteri del MARCHIO DI PREVENTIVO intorno al nome dell'estensione, nonostante la documentazione contraria.
Il comitato degli standard SQL o il team di Postgres hanno scelto un nome strano per quel comando. A mio avviso, avrebbero dovuto scegliere qualcosa come "INSTALLA ESTENSIONE" o "UTILIZZA ESTENSIONE".
Verifica installazione
È possibile verificare che l'estensione sia stata installata correttamente nel database desiderato eseguendo questo SQL per eseguire una query nel pg_extension
catalogo di sistema:
SELECT * FROM pg_extension;
UUID come valore predefinito
Per maggiori informazioni, vedi la domanda: valore predefinito per la colonna UUID in Postgres
The Old Way
Le informazioni sopra riportate utilizzano la nuova funzione di estensione aggiunta a Postgres 9.1. Nelle versioni precedenti, dovevamo trovare ed eseguire uno script in un file .sql . La funzione Estensioni è stata aggiunta per rendere l'installazione più semplice, scambiando un po 'più di lavoro per il creatore di un'estensione per meno lavoro da parte dell'utente / consumatore dell'estensione. Vedi il mio post sul blog per ulteriori discussioni.
Tipi di UUID
A proposito, il codice nella domanda chiama la funzione uuid_generate_v4()
. Questo genera un tipo noto come Versione 4 in cui quasi tutti i 128 bit vengono generati casualmente. Sebbene ciò vada bene per un uso limitato su un set di righe più piccolo, se si desidera eliminare virtualmente qualsiasi possibilità di collisione, utilizzare un'altra "versione" di UUID.
Ad esempio, la versione 1 originale combina l' indirizzo MAC del computer host con la data-ora corrente e un numero arbitrario, la possibilità di collisioni è praticamente nulla.
Per ulteriori discussioni, vedere la mia risposta sulla domanda correlata.