У меня есть «индексное» поле, которое хранит последовательный диапазон целых чисел, для безопасности я устанавливаю его уникальным.обновить запрос в определенном порядке
теперь я хочу, чтобы увеличить это поле на единицу, чтобы сохранить уникальный обновляю значение в порядке убывания:
MyModel.objects.all().order_by('-index').update(index=F('index')+1)
, что меня удивляет, что на какой-то машине IntegrityError получает поднимается и жалуется для дублированного значения индекса.
Есть ли что-нибудь, что я пропустил? Могу ли я сохранить записи только один за другим?
благодарит заранее!
UPDATE:
Я думаю, что корень проблемы в том, что нет ORDER BY в команде SQL UPDATE (см UPDATE with ORDER BY, а также SQL Server: UPDATE a table by using ORDER BY)
Очевидно Джанго просто переводит мое заявление в SQL UPDATE с ORDER_BY, что приводит к неопределенному поведению и создает разные результаты для каждой машины.