เป็นเพียงการเพิ่มเล็กน้อยที่จะทำให้เมื่อฉันได้ผลลัพธ์ที่แปลกประหลาดเมื่อพยายามแก้ไข UUID เมื่อสร้างขึ้น ฉันพบว่าคำตอบของRakeshเป็นคำตอบที่ง่ายที่สุดที่ใช้งานได้ดียกเว้นในกรณีที่คุณต้องการตัดขีดกลาง
สำหรับการอ้างอิง:
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, '-', '');
วิธีแก้ปัญหาง่ายๆเห็นได้ชัด แต่หวังว่านี่จะช่วยใครบางคนในเวลาที่ฉันเสียไป