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

2020-11-30 17:12:18 +08:00
 lambdAlan

场景

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

问题

    目前每次编辑老师的信息保存时,都是先删除该老师下的学生信息,再重新插入。有什么好的处理办法吗
982 次点击
所在节点    问与答
5 条回复
pushback
2020-11-30 17:24:27 +08:00
一个是整个页面内容一起保存,你所有对学生的操作不过是前端对数据的组合而已。
还有一种是单行保存,这种的保存按钮就只对老师的信息做保存,学生信息及时保存。
看页面怎么设计吧,你可以丢个页面上来看看
lambdAlan
2020-11-30 17:28:53 +08:00
@pushback 谢谢。数据库表是学生表和老师表,保存的时候先保存老师,再把老师的 id 关联到学生表里。
问题是:编辑时候前端页面是展示老师和学生,可以把以前的学生信息二次编辑再一起保存,也可以删掉一条学生信息再一起保存。所以要么前端对编辑后学生信息做对比,但是这样前端性能会损耗,要么就是后端删除后,再插入。就是不知道有什么更好的方法
pushback
2020-11-30 17:37:31 +08:00
我推荐你用 replace into,前端传学生数据的时候,有 ID 则带上 ID 没有则不带,这个语句会自己根据唯一键选择插入或更新。
1 、传入数据
2 、拿出传入的学生 ID 集
3 、删除这个集合里面的学生
4 、replace into 学生集
pushback
2020-11-30 17:38:41 +08:00
上面第三条更正,应该是删除不在这个 ID 集的学生
lambdAlan
2020-11-30 18:01:13 +08:00
@pushback 感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730665

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX