2012-01-05 51 views

回答

64

括號是放錯了地方:

setval('payments_id_seq', 21, true) 

否則你調用setval帶一個參數,而它需要兩個或三個。

+0

你說得對,謝謝 – stef 2012-01-05 15:35:27

+1

最後一個參數「true」是什麼意思? – inafalcao 2017-09-27 12:16:55

+1

'true'表示下一個值將是提供的數字+ 1,在本例中爲22.'false'表示下一個值將是提供的數字,或21.默認情況下,setval的行爲就像'true'被選中。更多詳情:https://www.postgresql.org/docs/9.6/static/functions-sequence.html – 2017-11-07 20:11:42

8
setval('sequence_name', sequence_value) 
97

我假設你實際上並沒有使用過時的PostgreSQL版本7.4,而只是錯誤地引用了這個版本的手冊。

此語法是無效的任何版本的PostgreSQL:


             
  
    ALTER SEQUENCE payments_id_seq LASTVALUE 22 
  

這會工作:

ALTER SEQUENCE payments_id_seq RESTART WITH 22; 

,等同於:

SELECT setval('payments_id_seq', 22, FALSE); 

目前manual has more


一個重複的操作你可能感興趣的:

ALTER SEQUENCE payments_id_seq START WITH 22; -- set default 
ALTER SEQUENCE payments_id_seq RESTART;  -- without value 

START [WITH]存儲默認RESTART號,用於後續RESTART調用沒有價值。最後一部分需要Postgres 8.4或更高版本。