Использование select setval('payments_id_seq', 21, true);
setval
содержит 3 параметра:
- 1-й параметр -
sequence_name
- 2-й параметр следующий
nextval
- 3-й параметр является необязательным.
Использование true или false в 3-м параметре setval выглядит следующим образом:
SELECT setval('payments_id_seq', 21); // Next nextval will return 22
SELECT setval('payments_id_seq', 21, true); // Same as above
SELECT setval('payments_id_seq', 21, false); // Next nextval will return 21
Лучший способ избежать жесткого кодирования имени последовательности, следующего значения последовательности и правильно обрабатывать пустую таблицу столбцов, можно использовать следующий способ:
SELECT setval(pg_get_serial_sequence('table_name', 'id'), coalesce(max(id), 0)+1 , false) FROM table_name;
где table_name
- имя таблицы, id
- primary key
таблицы