PLSQL - удалить корень из древовидной структуры данных - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть две таблицы: Products и ProductGroups.

Удаление корня иерархии разрешено только в том случае, если последняя содержит не более одной подгруппы.В этом случае подгруппа становится корнем иерархии.Все продукты, ранее назначенные для удаленного корня, назначаются новому корню иерархии.

Удаление последней группы, которой назначены продукты, не допускается.

Как я могу это реализовать?

create or replace procedure pDeleteProductGroup(p_code VARCHAR2) IS
v_var "ProductGroups"."code"%type;
begin
select func_parent(p_code) into v_var
from "ProductGroups"
where "code"=p_code;

update "ProductGroups" 
set "parentCode"=v_var
where "code"=p_code;

update "Products" 
set "groupCode"=v_var
where "groupCode"=p_code;
end;

create or replace FUNCTION func_parent (p_groupCode VARCHAR2)
  RETURN VARCHAR2
  IS
  v_var "ProductGroups"."parentCode"%type;
  BEGIN
  select "parentCode" into v_var from "ProductGroups"
  where p_groupCode="code";

  if v_var is null
  then v_var:=null;

  end if;

  return v_var;

  END;

1 Ответ

0 голосов
/ 01 февраля 2019

Если я вас правильно понял, вам не нужно ничего делать специальный , но

  • удалить корневой узел
  • обновить строку нового корневого узла иустановить для PARENT ID значение NULL (как теперь это root , верно)?

Если это не то, о чем вы просите, пожалуйста, предоставьте контрольный пример и объясните, что вы 'Я хочу сделать, и какой результат вы бы хотели получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...