まず、OracleとMySQLのソリューションが必要です。
私はフォルダテーブルを持っています:
ID | 名前 | 親 ID | 位置 _________________________________ 1 | ルート | null | null | 1 2 | | | 1 | 1 3 | b | 1 | 2 4 | b1 | 3 | 1 5 | b2 | 3 | 2 6 | c | 1 | 3 7 | d | 1 | 4 8 | え | 1 | 5
与えられたツリー:
根 |_a |_b | | |_b1 | | |_b2 |_c |_d |_e
列position
にはNOT NULL
andUNIQUE
制約があります。
問題 :
1 つのクエリでいくつかのフォルダーを削除する必要がある場合があります (例: フォルダー 'a'、'b1'、'd' を削除します)。これを行うと、フォルダーの位置にギャップがあります:
ID | 名前 | 親 ID | 位置 _________________________________ 1 | ルート | null | null | 1 3 | b | 1 | 2 5 | b2 | 3 | 2 6 | c | 1 | 3 8 | え | 1 | 5
したがって、位置列を更新するための単一のリクエストでテーブルを更新し、(UNIQUE
制約を防ぐために) 特定の順序で結果を取得する必要があります。
ID | 名前 | 親 ID | 位置 _________________________________ 1 | ルート | null | null | 1 3 | b | 1 | 2 5 | b2 | 3 | 1 6 | c | 1 | 2 8 | え | 1 | 3
何か案が ?
ありがとう