|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
Здравия вам, форумчане. Столкнулся с проблемой, дело в том, что при вставке записи в таблицу бд присваивает записи ID, который содержит какой-то номер N из последовательности и увеличивает значение последней на 1. Однако, если при вставке инсерт вдруг случится ON CONFLICT, то инсерт не вставится (по понятным причинам), но последовательность все так же будет увеличена. Соответственно, таким образом будут появляться дырки в айдишниках, что крайне не классно. Что делать, братцы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 17:27 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
kotkewЗдравия вам, форумчане. Столкнулся с проблемой, дело в том, что при вставке записи в таблицу бд присваивает записи ID, который содержит какой-то номер N из последовательности и увеличивает значение последней на 1. Однако, если при вставке инсерт вдруг случится ON CONFLICT, то инсерт не вставится (по понятным причинам), но последовательность все так же будет увеличена. Соответственно, таким образом будут появляться дырки в айдишниках, что крайне не классно. Что делать, братцы? 1)Использовать Bigserial Для таких целей. И пусть будут дырки. или 2)не использовать on conflict Дырки в id можно сделать десятком разных методов включая rollback и рестарт базы и быструю наумерацию без дырок сделать невозможно. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 19:08 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
kotkewбудут появляться дырки в айдишниках, что крайне не классно. Обоснуйте. Кстати, почему Вы полагаете, что последовательность идет подряд и что она вообще идет по возрастанию? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 19:10 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
kotkew, сиквенсы работают вне транзакции, по этому они не откатываются (ROLLBACK). если нужны номера без дырок, организуйте свой "сиквенс" в виде таблицы, и работайте с ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 19:20 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
ursido, Дело в том, что я совсем недавно перекатился с мускула и это первый раз, где я встречаюсь с постгрисом на практике, поэтому и возникает небольшой диссонанс. Скажите, вот есть у меня идентификация пользователей, допустим. Разве это эстетично то, что есть пропуски в их идентификаторах при подходе выше? Или нормальные поцаны на это кладут болт и позволяют первичным ключам уходить в бесконечность? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 19:50 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
Lonepsycho, можете подробнее немного об этом? В какую сторону копать, по каким словам гуглить? =) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 19:52 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
думал, что у вас бухгалтерия. но если речь идёт о ид юзверей, которые по большому счёту внутренние и с наружи не видны, то в этом случае - kotkewнормальные поцаны на это кладут болт и позволяют первичным ключам уходить в бесконечность ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 20:16 |
|
ON CONFLICT sequence обновляется
|
|||
---|---|---|---|
#18+
kotkew... по каким словам гуглить? =) Вот этого как раз не нужно. Прочитайте официальную документацию . Там есть много интересного. Например: автор... you should only assume that the nextval values are all distinct, not that they are generated purely sequentially ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 21:20 |
|
|
start [/forum/topic.php?fid=53&msg=39402760&tid=1996713]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 134ms |
0 / 0 |