MYSQL: 如何更新多个表中的uuid

MYSQL: How to update uuid in multiple tables

我有 2 个表:

table1
-UUID Id
-CHAR NAME

table2
-UUID Id
-UUID table1Id (foreign key for table1 Id)
-CHAR CHILD_INFO

我需要将这 2 个表的 ID 更新为新的 UUID。 (出于某些复制原因) 如何通过一次更新来做到这一点(1)将 talbe1 Id 更改为新的,2)更改 talbe2 table1Id 中的这个外部 ID? P.S。我们不能在外部约束中使用级联,因为某处使用多态关系。

我发现这个问题的解决方法是这样的查询:

SET foreign_key_checks = 0;

UPDATE table1 as t1
join (select uuid() as newId, Id from table1) as ut1 on t1.Id = ut1.Id
LEFT join table2 as t2 on t1.Id = t2.table1Id
SET t1.Id = ut1.newId, t2.table1Id = ut1.newId;

SET foreign_key_checks = 1;

因此您需要使用 Left Join 连接子表并进行复杂的更新。