在我目前的应用程序中,我正在制作一个菜单结构,可以递归地创建子菜单的自身。但是由于这个原因,我发现很难允许某种重新排序方法。大多数应用程序可能只是通过“排序”列来排序,但在这种情况下,尽管这样做似乎不可能,但稍微难一点。更新,插入和删除MySQL更新ID
我想要做的就是使用ID列。所以,如果我更新id 10为id 1,那么id 1之前会变成2.
我在想一个朋友的建议是使用级联。不过,多做一点研究似乎并不像我想的那样有效。
所以我的问题是,是否有能力在MySQL中天真地做到这一点?如果是的话,我可以做什么?如果不是,你会建议如何达成最终结果?
列:
id title alias icon parent
父母有一个较低的ID,然后在自己的孩子,以确保脚本创建阵列把孩子里面。但是,如果我想使用排序列,那么我将不得不建立一个编号系统,以确保子元素永远不会高于结果中的父元素。可能的,但是如果我更新了父项,那么我必须唯一地更新其所有子项,从而产生更多的MySQL查询。
我不是MySQL专家,所以这就是为什么我提出这个问题,我觉得可能有一个完美的解决方案,这可以让最小的开销,当涉及到应用程序的速度。
做它的ID列将是艰难的,因为你永远不能有相同的ID,所以你不能设置行10至2行第1行,直到将第1行设置为第2行,但您不能将第1行设置为第2行,直到将第2行设置为第3行等。您必须删除第10行,然后执行更新ID + = 1 WHERE ID <10 ...但你还必须告诉MySQL从最高的数字开始,然后往下...... – chrislondon
技术上这是可能的,但你不应该这样做。您的ID列是您应用程序中的其他所有内容,当您开始改变这一切时,您将遇到大量其他问题。添加一个订单栏,并做你所描述的一切。它会为你节省很多头痛的道路。 – Orangepill