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