使用setval('sequence',1)
将序列的起始值设置为 1。但是当插入记录时,第一个“序列”编号实际上是 2。
如何让实际的第一条记录的序列号为 1?
使用setval('sequence',1)
将序列的起始值设置为 1。但是当插入记录时,第一个“序列”编号实际上是 2。
如何让实际的第一条记录的序列号为 1?
来自精美手册:
setval
重置序列对象的计数器值。双参数形式将序列的last_value
字段设置为指定值并将其is_called
字段设置为true,这意味着下一个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')
.