Приносим извинения, если заголовок не передает вопрос должным образом.
Если у меня есть таблица Postgres с именем Person со следующими столбцами и данными:
name | age | order |
John | 42 | 1 |
Sam | 27 | 2 |
Phil | 19 | 3 |
Столбец заказа - это Float, который определяет порядок, в котором клиент должен отображать список лиц.
Есть ли оптимальный эффективный способ вставить Person с существующим порядком, но делегируя БД для автоматического увеличения значений в столбце порядка ? Если да, то как?
Например, если я добавляю нового человека (Emma, 56, 2)
, я хочу, чтобы результат был
name | age | order |
John | 42 | 1 |
Sam | 27 | 3 |
Phil | 19 | 4 |
Emma | 56 | 2 |
Примечание. Теперь заказы Сэма и Фила увеличиваются.
Возможное решение: Я могу воспользоваться функцией float и получить среднее значение предыдущего и текущего ордера. Таким образом, в приведенном выше примере это будет 1 (для Джона) + 2 (для Эммы во вставке) / 2. Новый порядок для Эммы будет равен 1,5, что хорошо подходит, как показано ниже:
name | age | order |
John | 42 | 1 |
Sam | 27 | 2 |
Phil | 19 | 3 |
Emma | 56 | 1.5 |
Но для этого требуется несколько вызовов БД, отсюда и вопрос.
Изменить: хотя я пошел с ответом Джорджа Джозефа в окончательной реализации, правильным ответом, который фактически ответил на вопрос, был зажим. Поэтому я пометил его ответ как принятый.