在我目前的應用程序中,我正在製作一個菜單結構,可以遞歸地創建子菜單的自身。但是由於這個原因,我發現很難允許某種重新排序方法。大多數應用程序可能只是通過「排序」列來排序,但在這種情況下,儘管這樣做似乎不可能,但稍微難一點。更新,插入和刪除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