Java 如何实现 mysql 插入数据时,复制表内 id 和 parentId 之间的关系,简单方法,说下思路

2021-06-25 09:47:49 +08:00
 gygesm123

背景 比如一张 X 表内,表数据都含有 xId 字段,根据这个字段查询出所有的数据 data,该 data 内含有,id 和 parentID 关系,也就是子节点和父节点关系。复制该 data 数据并重新插入到 X 表内,id 会自动生成,因为 ID 时自增的。但是 parentID 不会。怎么实现?将该关系也同样复制。

1150 次点击
所在节点    问与答
8 条回复
dejavuwind
2021-06-25 10:05:05 +08:00
看不懂描述,id,xId 是同一个东西么,不妨贴出示意表结构

最后一句话 [怎么实现?将该关系也同样复制。] 也看不明白
guisheng
2021-06-25 10:09:55 +08:00
复制该 data 数据的时候找不到 parentId 吗?
lllllm
2021-06-25 11:29:18 +08:00
如果是原数据插入 带上原来的 id parentId 不是影响啊 如果数据有删减 把 parentId = 删除 id 的数据去掉不就好了
sunjiayao
2021-06-25 11:40:07 +08:00
虽然 id 是自增的,但是插入的时候也可以手动录入。如果低版本 mysql 在使用自增插入时可能会报主键冲突错误(也可能不会,我曾经碰到过但忘了是 mysql 还是中间件的异常了 ),但也没关系。写个脚本循环执行下 insert 把冲突的主键冲过去就可以了。所以你在 copy 数据的时候直接把 id 也 copy 过去就可以了。
wowo243
2021-06-25 11:41:36 +08:00
除了 id 有别的唯一标识么,可以通过别的唯一标识再处理,比如 parentId 的某个值是 a,那插入新数据的时候就可以用 sql 或程序先根据这个 a 查出来 id 作为 parentId 插入数据
gygesm123
2021-06-25 13:52:53 +08:00
统一回复一下:应该是我描述的问题。其实是在数据库里复制一份树形结构。目前已经解决,感谢大家
akira
2021-06-25 15:40:24 +08:00
首先,个人建议 自增 id 不应做任何使用。
在这里的话, 做数据迁移的时候,把自增字段的数据也移过去就可以了
ily433664
2021-06-25 18:04:11 +08:00
插入父节点,获取到父节点的 id,将父节点 id 加入 parentID,然后在插入子节点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/785676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX