alter table category_tree_map add column
assign_single_p char(1) constraint cat_tree_map_single_p_ck check (assign_single_p in ('t','f'))
;
alter table category_tree_map alter column assign_single_p set default 'f';
alter table category_tree_map add column
require_category_p char(1) constraint cat_tree_map_categ_p_ck check (require_category_p in ('t','f'))
;
alter table category_tree_map alter column require_category_p set default 'f';
update category_tree_map set assign_single_p = 'f', require_category_p = 'f';
comment on column category_tree_map.assign_single_p is '
Are the users allowed to assign multiple or only a single category
to objects?
';
comment on column category_tree_map.require_category_p is '
Do the users have to assign at least one category to objects?
';
drop function category_tree__map (integer,integer,integer);
-- added
select define_function_args('category_tree__map','object_id,tree_id,subtree_category_id,assign_single_p,require_category_p');
--
-- procedure category_tree__map/5
--
CREATE OR REPLACE FUNCTION category_tree__map(
p_object_id integer,
p_tree_id integer,
p_subtree_category_id integer,
p_assign_single_p char,
p_require_category_p char
) RETURNS integer AS $$
DECLARE
v_map_count integer;
BEGIN
select count(*)
into v_map_count
from category_tree_map
where object_id = p_object_id
and tree_id = p_tree_id;
if v_map_count = 0 then
insert into category_tree_map
(tree_id, subtree_category_id, object_id,
assign_single_p, require_category_p)
values (p_tree_id, p_subtree_category_id, p_object_id,
p_assign_single_p, p_require_category_p);
end if;
return 0;
END;
$$ LANGUAGE plpgsql;