【问题标题】:MYSQL: How to update uuid in multiple tablesMYSQL:如何更新多个表中的 uuid
【发布时间】:2015-02-12 20:18:20
【问题描述】:
我有 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?
附言我们不能在外部约束中使用级联,因为某处使用了多态关系。
【问题讨论】:
标签:
mysql
sql-update
foreign-keys
hierarchy
guid
【解决方案1】:
我通过这样的查询找到了这个问题的解决方案:
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 连接子表并进行复杂的更新。