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