2016-12-14 15 views

回答

4

fine manual

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')

相關問題