powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ON CONFLICT sequence обновляется
8 сообщений из 8, страница 1 из 1
ON CONFLICT sequence обновляется
    #39402726
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравия вам, форумчане.

Столкнулся с проблемой, дело в том, что при вставке записи в таблицу бд присваивает записи ID, который содержит какой-то номер N из последовательности и увеличивает значение последней на 1. Однако, если при вставке инсерт вдруг случится ON CONFLICT, то инсерт не вставится (по понятным причинам), но последовательность все так же будет увеличена. Соответственно, таким образом будут появляться дырки в айдишниках, что крайне не классно.

Что делать, братцы?
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402754
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewЗдравия вам, форумчане.

Столкнулся с проблемой, дело в том, что при вставке записи в таблицу бд присваивает записи ID, который содержит какой-то номер N из последовательности и увеличивает значение последней на 1. Однако, если при вставке инсерт вдруг случится ON CONFLICT, то инсерт не вставится (по понятным причинам), но последовательность все так же будет увеличена. Соответственно, таким образом будут появляться дырки в айдишниках, что крайне не классно.

Что делать, братцы?

1)Использовать Bigserial Для таких целей. И пусть будут дырки.
или
2)не использовать on conflict

Дырки в id можно сделать десятком разных методов включая rollback и рестарт базы и быструю наумерацию без дырок сделать невозможно.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402755
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kotkewбудут появляться дырки в айдишниках, что крайне не классно.

Обоснуйте.

Кстати, почему Вы полагаете, что последовательность идет подряд и что она вообще идет по возрастанию?
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402760
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkew,

сиквенсы работают вне транзакции, по этому они не откатываются (ROLLBACK). если нужны номера без дырок, организуйте свой "сиквенс" в виде таблицы, и работайте с ней.
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402766
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ursido,

Дело в том, что я совсем недавно перекатился с мускула и это первый раз, где я встречаюсь с постгрисом на практике, поэтому и возникает небольшой диссонанс. Скажите, вот есть у меня идентификация пользователей, допустим. Разве это эстетично то, что есть пропуски в их идентификаторах при подходе выше? Или нормальные поцаны на это кладут болт и позволяют первичным ключам уходить в бесконечность?
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402767
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,

можете подробнее немного об этом? В какую сторону копать, по каким словам гуглить? =)
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402770
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думал, что у вас бухгалтерия. но если речь идёт о ид юзверей, которые по большому счёту внутренние и с наружи не видны, то в этом случае - kotkewнормальные поцаны на это кладут болт и позволяют первичным ключам уходить в бесконечность
...
Рейтинг: 0 / 0
ON CONFLICT sequence обновляется
    #39402787
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kotkew... по каким словам гуглить? =)

Вот этого как раз не нужно. Прочитайте официальную документацию . Там есть много интересного. Например:

автор... you should only assume that the nextval values are all distinct, not that they are generated purely sequentially
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ON CONFLICT sequence обновляется
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]