-- -- bt_project__keywords_delete/2 -- create or replace function bt_project__keywords_delete( integer, boolean ) returns int4 as $$ declare p_project_id alias for $1; p_delete_root_p alias for $1; v_root_keyword_id integer; rec record; begin -- get the content folder for this instance select root_keyword_id into v_root_keyword_id from bt_projects where project_id = p_project_id; -- if we are deleting the root, remove it from the project as well if p_delete_root_p = 1 then update bt_projects set root_keyword_id = null where project_id = p_project_id; end if; -- delete the projects keywords for rec in select k2.keyword_id from cr_keywords k1, cr_keywords k2 where k1.keyword_id = v_root_keyword_id and k2.tree_sortkey between k1.tree_sortkey and tree_right(k1.tree_sortkey) order by length(k2.tree_sortkey) desc loop if (p_delete_root_p = 1) or (rec.keyword_id != v_root_keyword_id) then perform content_keyword__delete(rec.keyword_id); end if; end loop; return 0; end; $$ language plpgsql;