实现向数据库中间插入数据

问题描述:假如现在有个学生表,表里有十条记录,现在要再添加一条记录a那么它会排在最后。

现在想要实现一个功能就是能把这条记录a插入到数据的中间,如插入到序号为3和4的记录的中间。

要实现这个功能要额外添加一个序号no字段,即使是使用的sqlite,mongodb这样本身有数据类型的id字段的数据库也需要添加一个no字段,原因有两点:

1)本身的id字段不能重复,如果把记录a添加到3和4中间,要把记录a的id改为4,原先id大于等于4的都要加1,在这个过程中想要id不重复实现起来会比较复杂

2)倘若还有个班级表,班级与学生之间为一对多关系,那么查询学生时都是根据班级来查询,即只要保证该班级下学生的相对顺序即可。如果仅用主键id字段,要往A班级里中间插入一名学生a,且插入的位置就是A班的第4名,假如原来的A班第4名id为9,现在学生a的id就要为9,而整个学生表里id>=9的都要加1,即B班的学生id也要改动(这是没有必要的),不然id就会重复,这就增加了很多时间成本。

综上所属不管有无自带的自增长整型主键id,都要添加一个Int类型序号字段no。

实现描述:

1)no字段的默认值等于它的id字段

2)要往A班级里中间插入一名学生a,且插入的位置就是A班的第4名,假如原来的A班第4名no为9,现在学生a的no改为9

3)遍历A班的所有学生,若no<9,不做处理,>=9,则no+1,这样A班的no值可能和其他班级的学生no值重复,但这没关系,只要保证A班学生的相对顺序即可,

4)查询时,根据no字段排序即可。

 

 

* 写的有点乱,主要是描述起来确实复杂不太好说。如果有人也想实现这个功能的话可以留言,后续再整理一下加上代码的实现~ 没有就算了~

 

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值