小编典典

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

mysql

我刚刚将一堆数据导入到MySQL表中,并且有一列“ GUID”,我希望基本上用新的和唯一的随机GUID填充所有现有行。

如何在MySQL中做到这一点?

我试过了

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

并且让每个领域都一样


阅读 618

收藏
2020-05-17

共1个答案

小编典典

我不确定这是否是最简单的方法,但是可以。这个想法是创建一个可以为您完成所有工作的触发器,然后执行查询以更新您的表,最后删除该触发器:

delimiter //
create trigger beforeYourTableUpdate  BEFORE UPDATE on YourTable
FOR EACH ROW
BEGIN
  SET new.guid_column := (SELECT UUID());
END
//

然后执行

UPDATE YourTable set guid_column = (SELECT UUID());

DROP TRIGGER beforeYourTableUpdate;

UPDATE 另一个不使用触发器,但需要主键或唯一索引的解决方案:

UPDATE YourTable,
INNER JOIN (SELECT unique_col, UUID() as new_id FROM YourTable) new_data 
ON (new_data.unique_col = YourTable.unique_col)
SET guid_column = new_data.new_id

*再次 *更新 :似乎您的原始查询也应该工作(也许您不需要WHERE columnID is not null,因此不需要我所有的花哨代码。

2020-05-17