Я думаю, что проблема в том, что при обновлении записей в какой-то момент времени появляются дубликаты (т.е. было поле 3 и 6, делаем +3 и сначала нам попадает поле 3, т.е. там будет 6, что конфликтует с уже имеющейся 6).
Вам нужно либо изменить PRIMARY KEY на DEFERRABLE (чтобы проверка выполнялась при завершении транзакции), либо обновлять данные в отсортированном виде, т.е. сначала прибавлять к самым новым записям в таблице.