Псевдокод
begin transaction isolation level REPEATABLE READ (или SERIALIZABLE)
update A set C=F where B > (select X from Y where Z = W)
commit
и
begin transaction isolation level REPEATABLE READ (или SERIALIZABLE)
select X from Y where Z = W 'здесь javascriptом забираю максимум в переменную VAR1'
update A set C=F where B > ($1), [VAR1] 'потом напрямую вставляю значение в запрос'
commit
Я правильно понимаю, что после объявления begin transaction вся база снепшотится, поэтому нет разницы, делать подзапрос или забирать данные отдельно. Поэтому два запроса выше эквивалентны с точки зрения concurrency