テーブルの自動インクリメントフィールドをある値に強制したいので、これを試してみました:
ALTER TABLE product AUTO_INCREMENT = 1453
そして
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
私はpostgresに不慣れです:(
フィールドを持つテーブルproductがIdありnameます
テーブルの自動インクリメントフィールドをある値に強制したいので、これを試してみました:
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
\dspsql のコマンドを使用して、データベース内のシーケンスを確認できます。そうした場合\d product、あなたの列のデフォルトの制約を見て、nextval(...)呼び出しがあまりにもシーケンス名を指定します。
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #です。「seq」はリテラルテキストで、#には番号を付けます。アンダースコアを無視しないでください。:-)
ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453場合は、それを行う必要がありRESTART WITH 1454ます。
次のコマンドは、これを自動的に実行します。これにより、テーブル内のすべてのデータも削除されます。ので注意してください。
TRUNCATE TABLE someTable RESTART IDENTITY;
TABLEキーワードは冗長です。TRUNCATE someTable RESTART IDENTITY;十分です
TRUNCATE someTable RESTART IDENTITY CASCADE;か?
シーケンスカウンターを設定するには:
setval('product_id_seq', 1453);
シーケンス名がわからない場合は、次のpg_get_serial_sequence関数を使用します。
select pg_get_serial_sequence('product', 'id');
pg_get_serial_sequence
------------------------
public.product_id_seq
パラメータは、テーブル名と列名です。
または\d product、psqlプロンプトで単にa を発行します。
=> \d product
Table "public.product"
Column | Type | Modifiers
--------+---------+------------------------------------------------------
id | integer | not null default nextval('product_id_seq'::regclass)
name | text |
-シーケンスの開始値を変更します
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
brew services restart postgresql
自動インクリメントをリセットするには、次のクエリを使用してシーケンス名を取得する必要があります。
構文:
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');
これにより、sequesce IDがtableName_ColumnName_seqになります。
最後のシード番号を取得するには
select currval(pg_get_serial_sequence('tableName', 'ColumnName'));
または、シーケンスIDがすでに直接使用されていることがわかっている場合。
select currval(tableName_ColumnName_seq);
最後のシード番号が表示されます
シード番号をリセットするには
ALTER SEQUENCE tableName_ColumnName_seq RESTART WITH 45
このクエリを使用して、スキーマとテーブルのシーケンスキーを確認します。
SELECT pg_get_serial_sequence('"SchemaName"."TableName"', 'KeyColumnName'); // output: "SequenceKey"
このクエリを使用して、増分値を1つずつ増やし、
SELECT nextval('"SchemaName"."SequenceKey"'::regclass); // output 110
テーブルに挿入すると、次の増分値がキー(111)として使用されます。
このクエリを使用して、増分値として特定の値を設定します
SELECT setval('"SchemaName"."SequenceKey"', 120);
テーブルに挿入すると、次の増分値がキー(121)として使用されます。