declare
v_parent_sk varbit default null;
v_max_value integer;
begin
if new.parent_id is null then
select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
from cr_keywords
where parent_id is null;
else
select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
from cr_keywords
where parent_id = new.parent_id;
select tree_sortkey into v_parent_sk
from cr_keywords
where keyword_id = new.parent_id;
end if;
new.tree_sortkey := tree_next_key(v_parent_sk, v_max_value);
return new;
end;