lambdAlan
V2EX  ›  问与答

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

  •  
  •   lambdAlan · Nov 30, 2020 · 1847 views
    This topic created in 2002 days ago, the information mentioned may be changed or developed.

    场景

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

    问题

        目前每次编辑老师的信息保存时,都是先删除该老师下的学生信息,再重新插入。有什么好的处理办法吗
    
    5 replies    2020-11-30 18:01:13 +08:00
    pushback
        1
    pushback  
       Nov 30, 2020
    一个是整个页面内容一起保存,你所有对学生的操作不过是前端对数据的组合而已。
    还有一种是单行保存,这种的保存按钮就只对老师的信息做保存,学生信息及时保存。
    看页面怎么设计吧,你可以丢个页面上来看看
    lambdAlan
        2
    lambdAlan  
    OP
       Nov 30, 2020
    @pushback 谢谢。数据库表是学生表和老师表,保存的时候先保存老师,再把老师的 id 关联到学生表里。
    问题是:编辑时候前端页面是展示老师和学生,可以把以前的学生信息二次编辑再一起保存,也可以删掉一条学生信息再一起保存。所以要么前端对编辑后学生信息做对比,但是这样前端性能会损耗,要么就是后端删除后,再插入。就是不知道有什么更好的方法
    pushback
        3
    pushback  
       Nov 30, 2020
    我推荐你用 replace into,前端传学生数据的时候,有 ID 则带上 ID 没有则不带,这个语句会自己根据唯一键选择插入或更新。
    1 、传入数据
    2 、拿出传入的学生 ID 集
    3 、删除这个集合里面的学生
    4 、replace into 学生集
    pushback
        4
    pushback  
       Nov 30, 2020
    上面第三条更正,应该是删除不在这个 ID 集的学生
    lambdAlan
        5
    lambdAlan  
    OP
       Nov 30, 2020
    @pushback 感谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3188 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
    ♥ Do have faith in what you're doing.