2012-01-05 6 views
58

シーケンスを特定の値に設定しようとしています。Postgresが手作業でシーケンスを変更する

SELECT setval('payments_id_seq'), 21, true 

これはエラーを与える:

ERROR: function setval(unknown) does not exist

ALTER SEQUENCEを使用すると、どちらか動作するようには思えないのですか?

ALTER SEQUENCE payments_id_seq LASTVALUE 22 

どのようにすることができますか?

参考:http://www.postgresql.org/docs/7.4/interactive/functions-sequence.html

+3

'setval()'には少なくとも2つの引数があるようです。 –

答えて

64

括弧が紛失されています

setval('payments_id_seq', 21, true) 

それは2または3を必要としながら、それ以外の場合、あなたは、単一の引数を持つsetvalを呼んでいます。

+0

あなたは正しいです、ありがとう – stef

+1

最後の引数 "真"はどういう意味ですか? – inafalcao

+1

'true'は次の値が与えられた数字+ 1、この場合は22であることを意味します。' false'は次の値が与えられた数、つまり21.を意味します、デフォルトではsetvalは 'true'選ばれた。詳細:https://www.postgresql.org/docs/9.6/static/functions-sequence.html –

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以降が必要です。

関連する問題