Я использую таблицу закрытия для иерархии некоторых страниц.Я хочу иметь возможность удалить страницу и обновить уровень дочерних элементов, которые она оставляет.
par child level
1 1 0
1 2 1
2 2 0
1 3 2
2 3 1
3 3 0
1 4 3
2 4 2
3 4 1
4 4 0
До удаления страницы 3 я пытался обновить уровни и затем удалить reocrds для страницы 3 целинапример:
par child level
1 1 0
1 2 1
2 2 0
1 4 2
2 4 1
4 4 0
, описывающий это с помощью (недопустимого) запроса, например, так:
UPDATE tbl_page_structures
SET page_level = page_level - 1
WHERE
child IN ( SELECT child FROM tbl_page_structures WHERE par = 3 )
AND page_level != 0;
DELETE ... where par=3 or child=3;
, что, очевидно, не удается выполнить обновление.завершить в одном запросе, но если способ tmp - это путь, то пусть так и будет - производительность на этом важнее, чем сладкая сладость sql ...