首先,我需要一个Oracle和MySQL的解决方案。
我有一个文件夹表:
编号 | 姓名 | parent_id | 位置 _________________________________ 1 | 根 | 空 | 1 2 | 一个 | 1 | 1 3 | 乙 | 1 | 2 4 | b1 | 3 | 1 5 | b2 | 3 | 2 6 | c | 1 | 3 7 | d | 1 | 4 8 | 电子| 1 | 5
给定树:
根 |_ 一个 |_ b | |_b1 | |_b2 |_c |_d |_e
该列position
具有NOT NULL
andUNIQUE
约束。
问题:
有时我必须在单个查询中删除一些文件夹(例如:删除文件夹'a'、'b1'、'd')。这样做时,我的文件夹位置有间隙:
编号 | 姓名 | parent_id | 位置 _________________________________ 1 | 根 | 空 | 1 3 | 乙 | 1 | 2 5 | b2 | 3 | 2 6 | c | 1 | 3 8 | 电子| 1 | 5
因此,我需要在单个请求中更新表以更新位置列并按特定顺序(以防止UNIQUE
约束)以获得结果:
编号 | 姓名 | parent_id | 位置 _________________________________ 1 | 根 | 空 | 1 3 | 乙 | 1 | 2 5 | b2 | 3 | 1 6 | c | 1 | 2 8 | 电子| 1 | 3
任何的想法 ?
谢谢