В Postgresql порядковые номера начинаются с 1, но фактически возвращают новые записи с идентификатором 2?
С помощью setval('sequence',1)
устанавливает начальное значение последовательности равным 1. Но когда вставляется запись, первый номер "последовательности" фактически равен 2.
Как получить фактическую первую запись с порядковым номером 1?
1 ответ
setval
Сброс значения счетчика объекта последовательности. Двухпараметрическая форма устанавливает последовательностьlast_value
поле к указанному значению и устанавливает егоis_called
поле к истине, что означает, что следующийnextval
продвинет последовательность перед возвратом значения. [...]SELECT setval('foo', 42); Next nextval will return 43 SELECT setval('foo', 42, true); Same as above SELECT setval('foo', 42, false); Next nextval will return 42
Так зовет setval('sequence', 1)
устанавливает текущее значение последовательности в 1
и следующее значение будет 2
, Вы, вероятно, хотите три аргумента setval
:
setval('sequence', 1, false)
таким образом is_called
флаг на последовательности будет ложным и nextval('sequence')
будет 1
, Также обратите внимание, что значением по умолчанию для столбцов, связанных с последовательностями, является nextval('sequence')
,