论坛楼层号如何保证唯一性?

2017-08-28 18:01:50 +08:00
 Marser

以百度帖吧为例,每个楼层,都有一个楼层号码。在回复的时候,就已经生成了这个楼层号码写进数据库。在前台显示的时候,楼层号码可以不连续(因为有可能中间某个回复被禁掉了)。那么,在生成楼层号码的时候,如何保证唯一性呢? 之前的考虑是在 mysql 中记录每个回复的楼层号,然后在添加新的回复时,通过 select max(楼层号) ,再加 1,就生成新的楼层号。但是这种方式在并发情况下,可能取到相同的 max(楼层号),导致生成的新楼层号存在重复的。 大家有没有好的思路?

3678 次点击
所在节点    算法
7 条回复
silentoy
2017-08-28 18:05:54 +08:00
discuz 里是做的帖子 ID 和楼层号的唯一索引,仅供参考
qq292382270
2017-08-28 18:06:50 +08:00
好吧.. 你非要这样的话可以建议你用时间来排序..
giuem
2017-08-28 18:09:14 +08:00
为什么不用自增主键
gamexg
2017-08-28 18:29:43 +08:00
难道删除操作是真实的数据库删除?
不都是只打个标吗?
这样楼层号码直接计算就是
evlos
2017-08-28 18:53:03 +08:00
前端算啊,反正知道当前是第几页,被禁的回复后端也可以给个返回
Mogugugugu
2017-08-28 18:55:36 +08:00
前端算吧、后台根据时间排序返回一个列表,被禁的回复返回一个禁用的状态。
Marser
2017-08-29 09:25:35 +08:00
@silentoy 好的,我有考虑过这种实现。非常感谢

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

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

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

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

© 2021 V2EX