Marser
V2EX  ›  算法

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

  •  
  •   Marser · Aug 28, 2017 · 4338 views
    This topic created in 3205 days ago, the information mentioned may be changed or developed.

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

    7 replies    2017-08-29 09:25:35 +08:00
    silentoy
        1
    silentoy  
       Aug 28, 2017
    discuz 里是做的帖子 ID 和楼层号的唯一索引,仅供参考
    qq292382270
        2
    qq292382270  
       Aug 28, 2017
    好吧.. 你非要这样的话可以建议你用时间来排序..
    giuem
        3
    giuem  
       Aug 28, 2017 via iPhone
    为什么不用自增主键
    gamexg
        4
    gamexg  
       Aug 28, 2017
    难道删除操作是真实的数据库删除?
    不都是只打个标吗?
    这样楼层号码直接计算就是
    evlos
        5
    evlos  
       Aug 28, 2017 via iPhone
    前端算啊,反正知道当前是第几页,被禁的回复后端也可以给个返回
    Mogugugugu
        6
    Mogugugugu  
       Aug 28, 2017
    前端算吧、后台根据时间排序返回一个列表,被禁的回复返回一个禁用的状态。
    Marser
        7
    Marser  
    OP
       Aug 29, 2017
    @silentoy 好的,我有考虑过这种实现。非常感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3018 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 00:33 · PVG 08:33 · LAX 17:33 · JFK 20:33
    ♥ Do have faith in what you're doing.