Когда я удаляю все записи из таблицы Postgresql и затем пытаюсь сбросить последовательность, чтобы начать новую запись с номером 1, когда она вставляется, я получаю разные результаты:
SELECT setval('tblname_id_seq', (SELECT COALESCE(MAX(id),1) FROM tblname));
Это устанавливает текущее значение последовательности равным 1, но СЛЕДУЮЩАЯ запись (фактически первая, потому что еще нет записей) получает номер 2!
И я не могу установить его в 0, потому что минимальное значение в последовательности равно 1!
Когда я использую:
ALTER SEQUENCE tblname_id_seq RESTART WITH 1;
первая вставленная запись фактически получает номер 1! Но приведенный выше код не принимает SELECT в качестве значения вместо 1.
Я хочу сбросить последовательность на номер 1, когда нет записей, и первая запись должна начинаться с 1. Но когда в таблице уже есть записи, я хочу сбросить последовательность так, чтобы следующая запись, вставлено, получит {наивысший} + 1
У кого-нибудь есть четкое решение для этого?