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

关于多表关联时的更新,主表下的一对多子表如果有变更,是先删除子表再插入吗,请问有更好的方案吗

  •  
  •   lambdAlan · 2020-11-30 17:12:18 +08:00 · 967 次点击
    这是一个创建于 1235 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景

        假如一个老师表单,表单包含可添加的多个学生信息。编辑老师信息时,可以对学生的记录进行删除、添加
    

    问题

        目前每次编辑老师的信息保存时,都是先删除该老师下的学生信息,再重新插入。有什么好的处理办法吗
    
    5 条回复    2020-11-30 18:01:13 +08:00
    pushback
        1
    pushback  
       2020-11-30 17:24:27 +08:00
    一个是整个页面内容一起保存,你所有对学生的操作不过是前端对数据的组合而已。
    还有一种是单行保存,这种的保存按钮就只对老师的信息做保存,学生信息及时保存。
    看页面怎么设计吧,你可以丢个页面上来看看
    lambdAlan
        2
    lambdAlan  
    OP
       2020-11-30 17:28:53 +08:00
    @pushback 谢谢。数据库表是学生表和老师表,保存的时候先保存老师,再把老师的 id 关联到学生表里。
    问题是:编辑时候前端页面是展示老师和学生,可以把以前的学生信息二次编辑再一起保存,也可以删掉一条学生信息再一起保存。所以要么前端对编辑后学生信息做对比,但是这样前端性能会损耗,要么就是后端删除后,再插入。就是不知道有什么更好的方法
    pushback
        3
    pushback  
       2020-11-30 17:37:31 +08:00
    我推荐你用 replace into,前端传学生数据的时候,有 ID 则带上 ID 没有则不带,这个语句会自己根据唯一键选择插入或更新。
    1 、传入数据
    2 、拿出传入的学生 ID 集
    3 、删除这个集合里面的学生
    4 、replace into 学生集
    pushback
        4
    pushback  
       2020-11-30 17:38:41 +08:00
    上面第三条更正,应该是删除不在这个 ID 集的学生
    lambdAlan
        5
    lambdAlan  
    OP
       2020-11-30 18:01:13 +08:00
    @pushback 感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5296 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:56 · PVG 15:56 · LAX 00:56 · JFK 03:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.