-- Тест с флагом true (значение считается уже выданным):
SELECT setval('seq_task_4_5', -2, true);
SELECT currval('seq_task_4_5'); -- Вернёт -2 (текущее зафиксированное значение)
SELECT nextval('seq_task_4_5'); -- Вернёт -1 (следующее после -2)
-- Тест с флагом false (значение будет возвращено при следующем nextval):
SELECT setval('seq_task_4_5', -2, false);
-- SELECT currval('seq_task_4_5'); -- Вызов currval() сразу после false выдаст ошибку, так как значение еще не прочитано в сессии
SELECT nextval('seq_task_4_5'); -- Вернёт ровно -2
SELECT currval('seq_task_4_5'); -- Теперь вернёт -2