首先,我需要一个解决方案Oracle和MySQL。MySql/Oracle删除数字列的空位
我有一个文件夹表:
id | name | parent_id | position _________________________________ 1 | root | null | 1 2 | a | 1 | 1 3 | b | 1 | 2 4 | b1 | 3 | 1 5 | b2 | 3 | 2 6 | c | 1 | 3 7 | d | 1 | 4 8 | e | 1 | 5给出的树
:
root |_ a |_ b | |_b1 | |_b2 |_c |_d |_e
列position
有NOT NULL
和UNIQUE
约束。
问题:
有时候,我不得不删除单个查询一些文件夹(如:删除文件夹 '一', 'B1', 'd')。做这件事时,我有空白的文件夹位置:
id | name | parent_id | position _________________________________ 1 | root | null | 1 3 | b | 1 | 2 5 | b2 | 3 | 2 6 | c | 1 | 3 8 | e | 1 | 5
所以我需要更新单个请求表更新位置列,并以特定的顺序(防止UNIQUE
约束)以获得结果:
id | name | parent_id | position _________________________________ 1 | root | null | 1 3 | b | 1 | 2 5 | b2 | 3 | 1 6 | c | 1 | 2 8 | e | 1 | 3
任何想法?
感谢
'删除间隙'是否意味着更新表? –
是的,我需要更新表,但我在一个请求中搜索这样做 – Yoplaboom
同样的SQL语句必须与MySQL和Oracle一起工作吗?可能会很棘手...... – jarlh