Как сбросить последовательность первичных ключей postgres, если они не синхронизированы?

isset($_POST['fromPerson']) 
467
задан a_horse_with_no_name 4 May 2018 в 06:36
поделиться

4 ответа

-- Login to psql and run the following

-- What is the result?
SELECT MAX(id) FROM your_table;

-- Then run...
-- This should be higher than the last result.
SELECT nextval('your_table_id_seq');

-- If it's not higher... run this set the sequence last to your highest id. 
-- (wise to run a quick pg_dump first...)

BEGIN;
-- protect against concurrent inserts while you update the counter
LOCK TABLE your_table IN EXCLUSIVE MODE;
-- Update the sequence
SELECT setval('your_table_id_seq', COALESCE((SELECT MAX(id)+1 FROM your_table), 1), false);
COMMIT;

источник - форум Ruby

648
ответ дан Craig Ringer 4 May 2018 в 06:36
поделиться

Попробуйте переиндексное .

ОБНОВЛЕНИЕ: Как указано в комментариях, это было в ответ на исходный вопрос.

0
ответ дан Hank Gay 4 May 2018 в 06:36
поделиться

<забастовка> ИЗМЕНЯЕТ ПОСЛЕДОВАТЕЛЬНОСТЬ sequence_name, ПЕРЕЗАПУСК С (ВЫБЕРИТЕ макс. (идентификатор) ИЗ table_name); не работает.

Скопированный с ответа @tardate:

SELECT setval(pg_get_serial_sequence('table_name', 'id'), MAX(id)) FROM table_name;
38
ответ дан tardate 4 May 2018 в 06:36
поделиться

Просто выполненный ниже команды:

SELECT setval('my_table_seq', (SELECT max(id) FROM my_table));
0
ответ дан Asad Rao 4 November 2019 в 08:28
поделиться
  • 1
    Я вижу проблему теперь! Тип =' json' параметр в jQuery относится к тому, какой тип ожидать, не, что это отправляет. It' s отправка регулярной формы отправляют закодированные данные, поэтому если я хочу отправить " json" я должен так или иначе преобразовать его в строку и передать " json = {foo:bar} " и т.д. я can' t верят, однако, этому that' s, как большинство людей делает это. Я должен пропускать что-то здесь. –  30 July 2009 в 18:18
Другие вопросы по тегам:

Похожие вопросы: