begin; -- -- procedure forums_reading_info__move_thread_update/2 -- CREATE OR REPLACE FUNCTION forums_reading_info__move_thread_update( p_source_message_id integer, p_target_message_id integer ) RETURNS integer AS $$ DECLARE v_source_root_message_id integer; BEGIN select root_message_id from forums_forums where forum_id = (select forum_id from forums_messages where message_id = p_source_message_id) into v_source_root_message_id; -- for all users that have read target, but not the source, remove -- target_info delete from forums_reading_info i where root_message_id = p_target_message_id and not exists (select 1 from forums_reading_info where root_message_id = v_source_root_message_id and user_id = i.user_id); -- for all users that have read source, remove reading info four -- source message since it no longer is root_message_id delete from forums_reading_info where root_message_id = p_source_message_id; return 1; END; $$ LANGUAGE plpgsql; end;