Просто небольшое дополнение, которое нужно сделать, поскольку я получил странный результат при попытке изменить UUID по мере их создания. Я нашел ответ на Ракеше , чтобы быть самым простым , что работает хорошо, за исключением тех случаев , когда вы хотите лишить тир.
Для справки:
UPDATE some_table SET some_field=(SELECT uuid());
Это отлично работало само по себе. Но когда я попробовал это:
UPDATE some_table SET some_field=(REPLACE((SELECT uuid()), '-', ''));
Тогда все результирующие значения были одинаковыми (незначительно разными - я в четыре раза проверял с помощью GROUP BY some_field
запроса). Каким бы ни было расположение скобок, происходит то же самое.
UPDATE some_table SET some_field=(REPLACE(SELECT uuid(), '-', ''));
Кажется, что при окружении подзапроса для генерации UUID с REPLACE он запускает запрос UUID только один раз, что, вероятно, имеет смысл в качестве оптимизации для гораздо более умных разработчиков, чем я, но для меня это не так.
Чтобы решить эту проблему, я просто разделил его на два запроса:
UPDATE some_table SET some_field=(SELECT uuid());
UPDATE some_table SET some_field=REPLACE(some_field, '-', '');
Простое решение, очевидно, но, надеюсь, это сэкономит кому-то время, которое я только что потерял.