Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ON CONFLICT sequence обновляется / 8 сообщений из 8, страница 1 из 1
11.02.2017, 17:27
    #39402726
kotkew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ON CONFLICT sequence обновляется
Здравия вам, форумчане.

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

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

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

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

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

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

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

Обоснуйте.

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

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

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

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

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

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


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