Я пытаюсь выяснить, если ниже запрос является безопасным для использования для следующего сценария:Atomic UPDATE, чтобы увеличить число в Postgresql
мне нужно генерировать последовательные номера, без пробелов. Поскольку мне нужно отслеживать многие из них, у меня есть записи последовательности записей таблицы с столбцом целых чисел.
Чтобы получить следующую последовательность, я увольняю инструкцию SQL ниже.
WITH updated AS (
UPDATE sequences SET sequence = sequence + ?
WHERE sequence_id = ? RETURNING sequence
)
SELECT * FROM updated;
Моим вопрос: есть запрос ниже сейфа, когда несколько пользователей срабатывали этот запрос в базе данных, в то же время без явного начала транзакции?
Примечание: первый параметр, как правило, 1, но также может быть 10, например, чтобы получить блок 10 новых порядковых номеров
Unrelated, но вы на самом деле не нужно КТР. «Обновление ... возврат» достаточно –
http://www.gplivna.eu/papers/gapless_sequences.htm –
К сожалению, из среды, которую я вынужден использовать, я не могу выполнить оператор UPDATE напрямую и получать все, что угодно вернулся. В качестве обходного пути я должен обернуть его в WITH – Paul