Juste un ajout mineur à faire car je me suis retrouvé avec un résultat étrange en essayant de modifier les UUID au fur et à mesure qu'ils étaient générés. J'ai trouvé la réponse par Rakesh était la plus simple qui fonctionnait bien, sauf dans les cas où vous souhaitez supprimer les tirets.
Pour référence:
UPDATE some_table SET some_field=(SELECT uuid());
Cela fonctionnait parfaitement tout seul. Mais quand j'ai essayé ceci:
UPDATE some_table SET some_field=(REPLACE((SELECT uuid()), '-', ''));
Ensuite, toutes les valeurs résultantes étaient les mêmes (pas subtilement différentes - j'ai quadruple vérifié avec une GROUP BY some_field
requête). Peu importe comment j'ai placé les parenthèses, la même chose se produit.
UPDATE some_table SET some_field=(REPLACE(SELECT uuid(), '-', ''));
Il semble qu'en entourant la sous-requête pour générer un UUID avec REPLACE, il n'exécute la requête UUID qu'une seule fois, ce qui est probablement parfaitement logique en tant qu'optimisation pour des développeurs beaucoup plus intelligents que moi, mais ce n'est pas le cas pour moi.
Pour résoudre ce problème, je viens de le diviser en deux requêtes:
UPDATE some_table SET some_field=(SELECT uuid());
UPDATE some_table SET some_field=REPLACE(some_field, '-', '');
Solution simple, évidemment, mais j'espère que cela fera gagner à quelqu'un le temps que je viens de perdre.