
以百度帖吧为例,每个楼层,都有一个楼层号码。在回复的时候,就已经生成了这个楼层号码写进数据库。在前台显示的时候,楼层号码可以不连续(因为有可能中间某个回复被禁掉了)。那么,在生成楼层号码的时候,如何保证唯一性呢? 之前的考虑是在 mysql 中记录每个回复的楼层号,然后在添加新的回复时,通过 select max(楼层号) ,再加 1,就生成新的楼层号。但是这种方式在并发情况下,可能取到相同的 max(楼层号),导致生成的新楼层号存在重复的。 大家有没有好的思路?
1 silentoy 2017 年 8 月 28 日 discuz 里是做的帖子 ID 和楼层号的唯一索引,仅供参考 |
2 qq292382270 2017 年 8 月 28 日 好吧.. 你非要这样的话可以建议你用时间来排序.. |
3 giuem 2017 年 8 月 28 日 via iPhone 为什么不用自增主键 |
4 gamexg 2017 年 8 月 28 日 难道删除操作是真实的数据库删除? 不都是只打个标吗? 这样楼层号码直接计算就是 |
5 evlos 2017 年 8 月 28 日 via iPhone 前端算啊,反正知道当前是第几页,被禁的回复后端也可以给个返回 |
6 Mogugugugu 2017 年 8 月 28 日 前端算吧、后台根据时间排序返回一个列表,被禁的回复返回一个禁用的状态。 |