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