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