テーブルの自動増分フィールドを強制的に何らかの値にしたいので、これを試しました:
ALTER TABLE product AUTO_INCREMENT = 1453
そして
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
私はpostgresが初めてです:(
product
およびId
フィールドを持つテーブルname
があります
product
列を持つテーブルid
を作成した場合、シーケンスは単にproduct
と呼ばれるのではなく、product_id_seq
(つまり、${table}_${column}_seq
)と呼ばれます。
これは、必要なALTER SEQUENCE
コマンドです。
ALTER SEQUENCE product_id_seq RESTART WITH 1453
Psqlの\ds
コマンドを使用して、データベース内のシーケンスを表示できます。 \d product
を実行し、列のデフォルトの制約を確認すると、nextval(...)
呼び出しでシーケンス名も指定されます。
Productテーブルのシーケンスがproduct_id_seqであると仮定して、探しているコマンドは次のとおりです。
ALTER SEQUENCE product_id_seq RESTART WITH 1453;
次のコマンドは、これを自動的に行います。これにより、テーブル内のすべてのデータも削除されます。注意してください。
TRUNCATE TABLE someTable RESTART IDENTITY;
シーケンスカウンターを設定するには:
setval('product_id_seq', 1453);
シーケンス名がわからない場合は、pg_get_serial_sequence
関数を使用します。
select pg_get_serial_sequence('product', 'id');
pg_get_serial_sequence
------------------------
public.product_id_seq
パラメーターは、テーブル名と列名です。
または、単にpsql
プロンプトで\d product
を発行します。
=> \d product
Table "public.product"
Column | Type | Modifiers
--------+---------+------------------------------------------------------
id | integer | not null default nextval('product_id_seq'::regclass)
name | text |
訪問者の便宜のためにコメントから変換(
このメッセージから、正しい構文が何であるかは明確ではありません。それは:
ALTER SEQUENCE product_id_seq RESTART WITH 1453;
Reset GUIから自動インクリメントする場合は、次の手順に従います。
次の値をリセットするIDENTITY列を持つテーブルがある場合、次のコマンドを使用できます。
ALTER TABLE ALTER COLUMN RESTART WITH;
-シーケンスの開始値を変更する
ALTER SEQUENCE project_id_seq RESTART 3000;
同じが動的:
SELECT SETVAL( 'project_id_seq'、(SELECT MAX(id)+ 1 FROM project));
SELECTの使用は邪魔ですが、うまくいきます。
ソース: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
自動インクリメントをリセットするには、次のクエリを使用してシーケンス名を取得する必要があります。
構文:
SELECT pg_get_serial_sequence(‘tablename’, ‘ columnname‘);
例:
SELECT pg_get_serial_sequence('demo', 'autoid');
クエリは、autoidのシーケンス名を"Demo_autoid_seq"として返します。次に、次のクエリを使用してautoidをリセットします
構文:
ALTER SEQUENCE sequenceName RESTART WITH value;
例:
ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;
シーケンスIDを取得するには
SELECT pg_get_serial_sequence('tableName', 'ColumnName');
これにより、tableName_ColumnName_seqとしてシーケンスIDが得られます。
最後のシード番号を取得するには
select currval(pg_get_serial_sequence('tableName', 'ColumnName'));
または、シーケンスIDが既に直接使用されていることがわかっている場合。
select currval(tableName_ColumnName_seq);
最後のシード番号が表示されます
シード番号をリセットするには
ALTER SEQUENCE tableName_ColumnName_seq RESTART WITH 45