AS
Вы делаете select for update, так? Это значит, что запрос заблокируется, если часть строк, которые вы выбираете, взяты другим select for update. Поэтому тут 2 варианта:
1) вы выбираете разные строки двумя транзакциями, в которых делается select for update, и изменяете их на одни и те же строки, поэтому получаете ошибку
2) либо просто делаете select for update и изменяете данные на те, которые уже вставлены.
Выглядит так, что проблема либо в логике приложения, либо в том, что вы не хотите обрабатывать ошибки.