-- -- acs_mail_multipart__add_content/2 -- create or replace function acs_mail_multipart__add_content( integer, integer ) returns int4 as $$ declare p_multipart_id alias for $1; p_content_item_id alias for $2; v_multipart_id integer; v_max_num integer; begin -- get a row lock on the multipart item select multipart_id into v_multipart_id from acs_mail_multiparts where multipart_id = p_multipart_id for update; select coalesce(max(sequence_number),0) into v_max_num from acs_mail_multipart_parts where multipart_id = p_multipart_id; insert into acs_mail_multipart_parts (multipart_id, sequence_number, content_item_id) values (p_multipart_id, v_max_num + 1, p_content_item_id); return v_max_num + 1; end; $$ language plpgsql;