[请益] 数据库里被删除的资料?

楼主: tingmeow (雪炉喵)   2017-03-02 21:56:57
id name relationship
1 阿猫 小王
2 阿狗 小三
3 阿摸 砲友
4 咩咩 姊姊
5 汪汪 哥哥
------------------
想请教一下,假如我删除了中间的第2-4个,
id是auto increment,那资料在插入的时候还是往后加 变成789...
这样会不会造成什么问题呢?例如说读页码的时候..
遇到这类情况大家会怎么做呢?
有办法让它自动补进之前被删的id吗?
新手上路 请多指点 感激感激 ~~
作者: LPH66 (-6.2598534e+18f)   2017-03-02 22:44:00
除非真的有很必须的连号要求, 不然删除的缺号就给他缺很多时候这个 id 并不具有数值意义而只是一个唯一代号而已反正数据库在存资料时不是根据你的 id 决定怎么存的缺号基本上无关紧要
作者: Phedra (Phedra)   2017-03-03 02:48:00
ID 缺号不影响页码,根据页码读取资料是看实作方式。通常是根据页码换算出 Offset 去取资料例如每页显示 20 笔资料,要读取第 3 页的资料,就会是offset = 20 * (3 - 1) = 40,从第40笔资料之后取得20笔SELECT * FROM user LIMIT 20 OFFSET 40等同 SELECT * FROM user LIMIT 40, 20
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-03-03 11:27:00
不会有什么问题,也不建议你补。当然你可以用另外一个表,删除时把空号加进去,新增时读出一个空号用掉,同时删掉,看你想不想做。如前面所述,有db帮忙,重新编号或页数是最简单的事情
作者: LPH66 (-6.2598534e+18f)   2017-03-03 21:40:00
啊, 看到推文回答大概猜到你的盲点在哪了基本上还是那个“id 不具有数值意义, 仅是唯一代号”的概念不过我少讲了一个性质, 这个 id 是“有序的唯一代号”列出资讯编页时并不是照数值去切页, 而是照顺序去切页所依据的就是这个“有序的唯一代号”的顺序反应在 SQL 指令上就是上面推文提的 limit / offset依照某顺序排好 (order by) 之后列出第几名 (limit/offset)因为 id 值跟实际存放位置没有关连, 不连号不影响这些操作你可以思考一下: 当进行有条件的查询时, id 值就不可能当做列表编页的依据了, 能依据的只有列表的第 N 名这个“第 N 名”概念正是 limit / offset 所代表的
作者: threeus (侍衛)   2017-03-05 12:14:00
结果问的人不见了
作者: latte0205 (冰咖啡)   2017-03-08 15:35:00
通常都是会跟其他表做关联性的资料表, 虽然只是ID,建议还是用假性删除会比较好, 多年开发的经验
楼主: tingmeow (雪炉喵)   2017-03-10 01:34:00
有我已经参考好上面的回答把分页写好了!!大感激QQ虽然是去查询一些网站类似的script来写的发现有的书把分页写得又臭又长 *-* 这个方法简单多了谢谢大家m(__ __)m 我想先直接无视id了

Links booklink

Contact Us: admin [ a t ] ucptt.com