mysql中的多个自动增量

时间:2011-08-16 21:29:48

标签: php mysql sorting auto-increment

我正在使用php和mysql。我有一个表,其id列设置为自动递增作为主键。我正在尝试添加另一个名为sort_order的列。插入行时,sort_order列应自动递增。然后用户将能够更改sort_order值。但是mysql不允许自动增加多个列?

自动增加sort_order值的最佳方法是什么?

受欢迎的请求,还有更多解释。

在管理区域中,用户将有一个类别列表。使用javascript,用户可以拖动他们想要类别的顺序。脚本然后发布新订单中所有ID的列表,以及旧订单中的sort_order值。

然后我有一个php函数,用新的sort_order值更新mysql。

所有这些都已经完成,除了我手动填写了所有sort_order值。我希望它能够在用户创建新类别时获得值。

然后我可以使用sort_order在前端正确显示类别顺序。

我已经完成了一切。但在开发过程中,我手动填写了sort_order的值。

5 个答案:

答案 0 :(得分:7)

默认情况下,您可以将排序列保留为NULL。你唯一需要的是一个更聪明的查询。例如:

select * 
from something
order by ifnull(sort, id)

答案 1 :(得分:1)

您可以使用trigger在插入时更新行,或在生成查询时在PHP代码中选择适当的值。

但是,您应该考虑是否确实需要创建自动递增的sort_order值。在显示代码中,您可以对已经给出明确排序顺序的项目进行排序,并将剩余的未排序项目放在列表中的适当位置(底部?)。

答案 2 :(得分:1)

也许添加一个时间戳并对其进行排序,这实际上为您的数据模型增加了意义。 “sort_order”列意味着您将表示(视图)逻辑放入数据模型中,这是一件坏事。

答案 3 :(得分:0)

答案 4 :(得分:0)

您可以在sort_order中存储0,然后按sort_order + id排序。结果将相同,因为sort_order将精确为0而不是idid上的更少)