在MySQL中为现有数据生成GUID?

135

我刚刚将一堆数据导入到MySQL表中,我有一个名为“GUID”的列,我想基本上使用新的唯一随机GUID填充所有现有行。

我该如何在MySQL中做到这一点?

我尝试过

UPDATE db.tablename
  SET columnID = UUID()
  where columnID is not null

只需将每个字段都保持相同即可


2
你真的确定它们是一样的吗?我已经尝试过了,大部分字符都是相同的,但在生成的 UUID 中还有一些差异。 - xiaoyifang
是的,我确认,它是相同的! - Cyril N.
2
它对我有效-差异很小,但确实存在。检查的最快方法是向列添加唯一约束。 - PSU
很抱歉在这里帖子又被顶起来了,但是 SET columnID = UUID() 是行得通的 - 只是如果你对大量行做这个操作,UUID 字符的大部分看起来都会是相同的,但细微的差别还是存在的。赞成 PSU 的回答。 - joelc
12个回答

1
// UID Format: 30B9BE365FF011EA8F4C125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(REPLACE(@i:=UUID(),'-','')));

// UID Format: c915ec5a-5ff0-11ea-8f4c-125fc56f0f50
UPDATE `events` SET `evt_uid` = (SELECT UUID());

// UID Format: C915EC5A-5FF0-11EA-8F4C-125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(@i:=UUID()));

0

当我将sql_mode设置为""时,我遇到了这个错误。经过一些测试,我决定问题是由于这种用法引起的。当我在默认设置上进行测试时,发现这个问题不存在。 注意:在更改模式后,请不要忘记刷新您的连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接