-- -- sp_folders_insert_tr/0 -- create or replace function sp_folders_insert_tr( ) returns trigger as $$ 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 sp_folders where parent_id is null; else select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value from sp_folders where parent_id = new.parent_id; select tree_sortkey into v_parent_sk from sp_folders where folder_id = new.parent_id; end if; new.tree_sortkey := tree_next_key(v_parent_sk, v_max_value); return new; end;$$ language plpgsql;