如何在两行之间插入行并在数据库中赋予它优先级?

Wah*_*tar 3 sql-server database-design

我在数据库表中有一堆消息.我想按优先级发送这些消息,所以我将"优先级"列添加到"消息"表.

但是,如果我想在两条消息之间插入"cram"消息并将先前的优先级赋予此新消息,该怎么办?

我应该更新此消息下的所有消息优先级.

所以请为我的数据库表提供完美的设计,以支持优先级更新.

ric*_*ent 5

对于Priority而不是int,请使用float列.

然后,要在另外两个消息之间插入消息,请将两个消息的优先级值的平均值指定为新消息的优先级.(例如,要在优先级为2和3的消息之间插入填充消息,请为其分配优先级2.5).

通过这样做,您不必更新任何其他消息的优先级,并且您可以继续在这些消息之间进行平均/插入等,直到您遇到浮动的小数精度限制(这将需要一段时间,尤其是如果原始优先级值往往很小).

或者,在ORDER BY中的Priority之后添加另一列.在最简单的情况下,使用名为"ShowAfter"的位列,默认值为0.当您插入填充消息时,请为其提供与之后要查看的消息相同的优先级,但[ShowAfter]值为1.