V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gygesm123
V2EX  ›  问与答

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

  •  
  •   gygesm123 · 2021-06-25 09:47:49 +08:00 · 1122 次点击
    这是一个创建于 1242 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    8 条回复    2021-06-25 18:04:11 +08:00
    dejavuwind
        1
    dejavuwind  
       2021-06-25 10:05:05 +08:00
    看不懂描述,id,xId 是同一个东西么,不妨贴出示意表结构

    最后一句话 [怎么实现?将该关系也同样复制。] 也看不明白
    guisheng
        2
    guisheng  
       2021-06-25 10:09:55 +08:00
    复制该 data 数据的时候找不到 parentId 吗?
    lllllm
        3
    lllllm  
       2021-06-25 11:29:18 +08:00
    如果是原数据插入 带上原来的 id parentId 不是影响啊 如果数据有删减 把 parentId = 删除 id 的数据去掉不就好了
    sunjiayao
        4
    sunjiayao  
       2021-06-25 11:40:07 +08:00
    虽然 id 是自增的,但是插入的时候也可以手动录入。如果低版本 mysql 在使用自增插入时可能会报主键冲突错误(也可能不会,我曾经碰到过但忘了是 mysql 还是中间件的异常了 ),但也没关系。写个脚本循环执行下 insert 把冲突的主键冲过去就可以了。所以你在 copy 数据的时候直接把 id 也 copy 过去就可以了。
    wowo243
        5
    wowo243  
       2021-06-25 11:41:36 +08:00
    除了 id 有别的唯一标识么,可以通过别的唯一标识再处理,比如 parentId 的某个值是 a,那插入新数据的时候就可以用 sql 或程序先根据这个 a 查出来 id 作为 parentId 插入数据
    gygesm123
        6
    gygesm123  
    OP
       2021-06-25 13:52:53 +08:00
    统一回复一下:应该是我描述的问题。其实是在数据库里复制一份树形结构。目前已经解决,感谢大家
    akira
        7
    akira  
       2021-06-25 15:40:24 +08:00
    首先,个人建议 自增 id 不应做任何使用。
    在这里的话, 做数据迁移的时候,把自增字段的数据也移过去就可以了
    ily433664
        8
    ily433664  
       2021-06-25 18:04:11 +08:00
    插入父节点,获取到父节点的 id,将父节点 id 加入 parentID,然后在插入子节点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3120 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.