-- -- acs_message_insert_tr/0 -- create or replace function acs_message_insert_tr( ) returns trigger as $$ declare v_parent_sk varbit default null; v_max_value integer; begin if new.reply_to is null then select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value from acs_messages where reply_to is null; else select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value from acs_messages where reply_to = new.reply_to; select tree_sortkey into v_parent_sk from acs_messages where message_id = new.reply_to; end if; new.tree_sortkey := tree_next_key(v_parent_sk, v_max_value); return new; end;$$ language plpgsql;