граничение @PostgreSQL, которое проверяется при фиксации, а не ранее [duplicate]
На этот вопрос уже есть ответ:
Ограничение определено DEFERRABLE INITIALLY IMMEDIATE все еще отложено? 2 ответаМожно ли создать для создания уникального индекса или другого вида ограничения в PostgreSQL, которое будет проверяться в транзакции COMMIT, а не на миллисекунду раньше?
Мне нужен индекс для пары (record_id, ordering), поэтому я удостоверяюсь, что внутри данного record_id только одна и не более одной записи имеют одинаковый порядок. Где проблема? Ну, проблема в том, как веб-фреймворк, который я использую, обрабатывает переупорядочение элементов. Похоже, что при перемещении элемента, когда был изменен порядок сортировки, среда записывает новый элемент с новым значением порядка, а затем вскоре обновляет другой, создавая временную ситуацию, когда несколько записей имеют та же самая стоимость заказа. После повторного заказа все записи обновляются, и при транзакции COMMIT все должно быть снова в порядке.
Я использую PostgreSQL 10, если это имеет значение.