Hello, I'm trying to figure out if the following stored procedure is safe in a high concurrency environment. I'm using the Postgresql 9.4 with all the default settings.
create procedure test(in topic_id int) as declare i_forum_id int; declare i_post_tally int; begin delete from forum_topics where topic_id = i_topic_id returning forum_id, post_tally into i_forum_id, i_post_tally; update forums set post_tally = post_tally - i_post_tally where forum_id = i_forum_id; end; If transaction #1 deletes the row from forum_topics and immediately after transaction #2 updates the post tally, will the update to the post_tally in transaction #1 be the correct value?