Chỉ là một bổ sung nhỏ để thực hiện vì tôi đã nhận được một kết quả kỳ lạ khi cố gắng sửa đổi các UUID khi chúng được tạo. Tôi thấy câu trả lời của Rakesh là câu trả lời đơn giản nhất hoạt động tốt, ngoại trừ trường hợp bạn muốn loại bỏ dấu gạch ngang.
Để tham khảo:
UPDATE some_table SET some_field=(SELECT uuid());
Điều này đã hoạt động hoàn hảo của riêng nó. Nhưng khi tôi thử điều này:
UPDATE some_table SET some_field=(REPLACE((SELECT uuid()), '-', ''));
Sau đó, tất cả các giá trị kết quả đều giống nhau (không khác biệt một cách tinh tế - tôi đã kiểm tra bốn lần bằng một GROUP BY some_field
truy vấn). Không quan trọng cách tôi định vị các dấu ngoặc đơn, điều tương tự cũng xảy ra.
UPDATE some_table SET some_field=(REPLACE(SELECT uuid(), '-', ''));
Có vẻ như khi xoay quanh truy vấn con để tạo UUID với REPLACE, nó chỉ chạy truy vấn UUID một lần, điều này có thể có ý nghĩa hoàn hảo như một sự tối ưu hóa cho các nhà phát triển thông minh hơn tôi, nhưng với tôi thì không.
Để giải quyết vấn đề này, tôi chỉ cần chia nó thành hai truy vấn:
UPDATE some_table SET some_field=(SELECT uuid());
UPDATE some_table SET some_field=REPLACE(some_field, '-', '');
Giải pháp đơn giản, rõ ràng, nhưng hy vọng điều này sẽ tiết kiệm cho ai đó thời gian mà tôi vừa mất.