276

シーケンスを特定の値に設定しようとしています。

SELECT setval('payments_id_seq'), 21, true

これによりエラーが発生します。

ERROR: function setval(unknown) does not exist

使用ALTER SEQUENCEしてもうまくいかないようですか?

ALTER SEQUENCE payments_id_seq LASTVALUE 22

これはどのように行うことができますか?

参照: https://www.postgresql.org/docs/current/static/functions-sequence.html

4

6 に答える 6

402

括弧の位置が間違っています:

SELECT setval('payments_id_seq', 21, true);  # next value will be 22

setvalそれ以外の場合は、単一の引数で呼び出していますが、2 つまたは 3 つ必要です。

これはSELECT setval('payments_id_seq', 21)

于 2012-01-05T15:31:59.877 に答える
253

この構文は、PostgreSQLのどのバージョンでも無効です。

ALTER SEQUENCE payments_id_seq LASTVALUE 22

これはうまくいくでしょう:

ALTER SEQUENCE payments_id_seq RESTART WITH 22;

そして、以下と同等です:

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

およびシーケンス関数の現在のマニュアルで詳細を確認してください。ALTER SEQUENCE

またはのいずれかをsetval()期待することに注意してください。上記の例では、型指定されていないリテラルを提供しています。それもうまくいきます。ただし、型付き変数を関数にフィードする場合は、関数型の解決を満たすために明示的な型キャストが必要になる場合があります。好き:(regclass, bigint)(regclass, bigint, boolean)

SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);

繰り返し操作する場合は、次のことに関心があります。

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

START [WITH]デフォルトの番号を格納しますRESTART。これは、値のない後続のRESTART呼び出しに使用されます。最後の部分にはPostgres8.4以降が必要です。

于 2012-01-05T22:46:09.707 に答える
9

select setval('sequence_name', sequence_value)

于 2012-01-05T15:31:16.923 に答える