Как узнать, где находится последовательность postgresql в приложении rails? - PullRequest
0 голосов
/ 18 июня 2019

Я столкнулся с этой проблемой автоматического увеличения рельсов, не синхронизированной с последовательностью postgresql приложения. Это произошло потому, что я вручную добавил записи и дал им идентификатор, что означало, что у этих записей были идентификаторы, но последовательность postgresql не знала об этих записях и поэтому не увеличивала последовательность postgresql, поэтому последовательность не изменилась, и это вызвало серьезную ошибку. проблемы позже.

В любом случае, у меня есть простой вопрос, есть ли команда, которую я могу запустить, чтобы узнать, где находится последовательность postgresql для конкретной таблицы? В большинстве случаев оно (надеюсь) будет иметь то же значение, что и последний максимальный идентификатор в этой таблице, но я хочу провести некоторое исследование / проверку и, таким образом, захотеть узнать, как найти последовательность.

Примечание

Я пытался

ActiveRecord::Base.connection.execute("select currval(pg_get_serial_sequence('users', 'id'));")

И он вернулся

Traceback (most recent call last):
        1: from (irb):4
ActiveRecord::StatementInvalid (PG::ObjectNotInPrerequisiteState: ERROR:  currval of sequence "users_id_seq" is not yet defined in this session)
: select currval(pg_get_serial_sequence('users', 'id'));

Также обратите внимание

Я побежал (похоже на выше)

ActiveRecord::Base.connection.execute("select nextval(pg_get_serial_sequence('users', 'id'));")

И это возвращает

=> #<PG::Result:0x000000000521ce88 status=PGRES_TUPLES_OK ntuples=1 nfields=1 cmd_tuples=1>

Но я бы ожидал увидеть номер. Например. если таблица users имеет 6000 пользователей, я ожидаю, что она вернет 6001 (следующий по порядку)

1 Ответ

0 голосов
/ 18 июня 2019

Это вернет текущее значение последовательности (для таблицы users - чтобы сделать это для другой таблицы, просто замените «users» ниже на имя вашей таблицы)

ActiveRecord::Base.connection.execute("SELECT currval('users_id_seq');").values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...