У меня есть две таблицы: 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;