UUID'leri oluşturuldukları gibi değiştirmeye çalışırken garip bir sonuçla sonuçlandığım için yapmam gereken küçük bir ekleme. Bulduğum cevabı ile Rakesh , iyi gitti en basit olması size tire şerit istediğiniz durumlarda hariç için.
Referans için:
UPDATE some_table SET some_field=(SELECT uuid());
Bu kendi başına mükemmel çalıştı. Ama bunu denediğimde:
UPDATE some_table SET some_field=(REPLACE((SELECT uuid()), '-', ''));
Sonra ortaya çıkan tüm değerler aynıydı (pek de farklı değil - bir GROUP BY some_field
sorgu ile dört kez kontrol ettim ). Parantezleri nasıl yerleştirdiğim önemli değil, aynı şey oluyor.
UPDATE some_table SET some_field=(REPLACE(SELECT uuid(), '-', ''));
Görünüşe göre, REPLACE ile bir UUID oluşturmak için alt sorguyu çevrelediğinde, UUID sorgusunu yalnızca bir kez çalıştırıyor, bu muhtemelen benden çok daha akıllı geliştiriciler için bir optimizasyon olarak mükemmel bir anlam ifade ediyor, ancak bana etmedi.
Bunu çözmek için, sadece iki sorguya ayırdım:
UPDATE some_table SET some_field=(SELECT uuid());
UPDATE some_table SET some_field=REPLACE(some_field, '-', '');
Açıkçası basit bir çözüm, ama umarım bu birisine kaybettiğim zamandan tasarruf ettirir.