Craig Ringer tarafından cevap doğrudur. İşte Postgres 9.1 ve sonrası için biraz daha bilgi…
Uzantı Var mı?
Zaten senin Postgres kurulumu (sizin için inşa edilmiş, yalnızca bir uzantı yükleyebilir küme Postgres lingo). Örneğin, uuid-ossp uzantısını EnterpriseDB.com tarafından sağlanan Mac OS X yükleyicisinin bir parçası olarak buldum . Bir Herhangi birkaç düzine uzantıları bulunabilir.
Uuid-ossp uzantısının Postgres kümenizde kullanılabilir olup olmadığını görmek için, pg_available_extensions
sistem kataloğunu sorgulamak için şu SQL'i çalıştırın :
SELECT * FROM pg_available_extensions;
Uzantısı yükleyin
Bu UUID ile ilişkili uzantıyı yüklemek için , bu SQL'de görüldüğü gibi CREATE EXTENSION komutunu kullanın :
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Dikkat: Aksi belgelere rağmen, uzantı adı etrafında QUOTATION MARK karakterlerini gerekli buldum.
SQL standartları komitesi veya Postgres ekibi bu komut için tek bir ad seçti. Bana göre, "UZATMA YÜKLE" veya "UZATMA KULLAN" gibi bir şey seçmelilerdi.
Yüklemeyi Doğrula
pg_extension
Sistem kataloğunu sorgulamak için bu SQL'i çalıştırarak uzantının istenen veritabanına başarıyla yüklendiğini doğrulayabilirsiniz :
SELECT * FROM pg_extension;
Varsayılan değer olarak UUID
Daha fazla bilgi için, Soru: Postgres'te UUID sütunu için varsayılan değer konusuna bakın.
Eski Yol
Yukarıdaki bilgiler Postgres 9.1'e eklenen yeni Uzantılar özelliğini kullanmaktadır . Önceki sürümlerde, bir .sql dosyasında bir komut dosyası bulup çalıştırmamız gerekiyordu . Uzantıları yükleme işlemini kolaylaştırmak için eklenti kullanıcısı / tüketicisi tarafında daha az çalışma yapmak üzere bir uzantıyı oluşturan kişi için biraz daha fazla işlem yapmak amacıyla eklenmiştir . Daha fazla tartışma için blog gönderime bakın .
UUID Türleri
Bu arada, Soru'daki kod işlevi çağırır uuid_generate_v4()
. Bu , 128 bitin neredeyse tamamının rastgele oluşturulduğu Sürüm 4 olarak bilinen bir tür oluşturur. Bu, daha küçük satır kümelerinde sınırlı kullanım için iyi olsa da, herhangi bir çarpışma olasılığını neredeyse ortadan kaldırmak istiyorsanız, UUID'nin başka bir "sürümünü" kullanın.
Örneğin, orijinal Sürüm 1 birleştirir MAC adresi geçerli tarih-zaman ana bilgisayarın ve keyfi bir sayı, çakışması olasılığı hemen hemen sıfırdır.
Daha fazla tartışma için, ilgili Soruya verilen cevabım bölümüne bakın .