Сброс последовательности PostgreSQL в триггерной функции

У меня есть стол counter_registry это имеет столбец priority_number со значением по умолчанию от nextval('counter_registry_priority_number_seq'::regclass), Моя триггерная функция (которая запускается перед вставкой) имеет фрагмент, который сбрасывает последовательность, когда на указанную дату нет транзакций:

-- Restart the priority number sequence if current day is a new day
IF (SELECT CASE WHEN NOT EXISTS ( SELECT * FROM counter_registry WHERE transaction_date = now()::date ) THEN true ELSE false END) = true
    THEN PERFORM setval('counter_registry_priority_number_seq', 1);
END IF;

Когда я вставляю новую запись в таблицу в новый день из клиентского приложения, priority_number Столбец получает свое значение из следующего значения последовательности до сброса, даже если он уже был сброшен. Последующие вставки следуют за новой последовательностью сброса, начиная с 1.

Как правильно сбросить последовательность, чтобы после такого, когда я вставляю первый раз, я получал следующее значение измененной последовательности?

0 ответов

Другие вопросы по тегам