订购并更改一列数据库

时间:2014-06-10 03:56:41

标签: mysql sql

我的数据库中有一个名为position的col用于排序。但是,当删除某些记录时,序列会搞砸。我希望在更改表格时重新排序此col(可能使用触发器)。

    position(old)    ->  position(new)
       1                    1
       3                    2
       7                    3
       8                    4
像这样。 我认为即使在位置(旧)也不会存在相同的数字,因为我已经在PHP中附加了一些函数来在更新发生时重新排序列。但是,当删除其parent删除记录时,将不会调用该函数。
谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

如果您仅使用该列进行排序,则无需在删除时更新列,因为订单仍然正确。而且你会节省一些资源。

但是如果你真的需要按顺序更新,请看看这个答案:

updating columns with a sequence number mysql

我相信(正如scrowler所写)在这种情况下更好的方法是在应用程序删除父记录后更新应用程序中的行。

答案 1 :(得分:0)

如果您决定在应用程序中更新它,那么......

如果删除position = n,则应将逻辑设置为position = position - 1,其中position> Ñ

请注意,只有当您从应用程序中删除一条记录时,并且假设在触发删除之前数据已经按顺序排列之前,这将起作用