Почему идентификаторы первичного ключа не в последовательности? - PullRequest
1 голос
/ 10 марта 2020

Первичный ключ моей последней записи был 552, и когда я добавил новую запись, ей назначен первичный ключ 584.

Я удивлен и хотел бы узнать возможные причины такого поведения.

Сведения о приложении:

  • Сервер: план хобби Heroku - dyno
  • База данных: Heroku Postgres
  • Framework: Ruby on Rails

Дополнительная информация -> Я использую панель администратора rails для добавления новой записи

1 Ответ

4 голосов
/ 10 марта 2020

Возможные причины:

  1. Некоторые записи были добавлены + удалены
  2. По какой-то причине операция вставки была отменена, С postgres Вручную :

    Примечание. Поскольку smallserial, serial и bigserial реализованы с использованием последовательностей, в последовательности значений, которая появляется в столбце, могут быть «дыры» или пробелы, даже если строки не удаляются. Значение, выделенное из последовательности, все еще «израсходовано», даже если строка, содержащая это значение, никогда не будет успешно вставлена ​​в столбец таблицы. Это может произойти, например, если транзакция вставки откатывается.

  3. Соответствующая последовательность table_name_seq имеет increment больше 1 (вероятно, не ваш случай, иногда полезно для шардинга)
...