テーブルを切り捨てた後、間違ったシリアル ID を取得するために SELECT lastval() を使用します。
テーブルを切り捨てるときに SELECT lastval() を使用すると、間違った ID/
テーブルを切り捨てた後、間違ったシリアル ID を取得するために SELECT lastval() を使用します。
テーブルを切り捨てるときに SELECT lastval() を使用すると、間違った ID/
TRUNCATE
SQL コマンドを使用します。
単一のテーブルの場合、構文は次のとおりです。
TRUNCATE TABLE table_name RESTART IDENTITY;
複数のテーブルの場合:
TRUNCATE TABLE table_foo, table_bar RESTART IDENTITY;
機能:
切り捨てられたテーブルの列が所有するシーケンスを自動的に再開します。
詳細はこちら: TRUNCATE @ postgresql.org
以下は、シーケンスをリセットする標準的な方法です。
truncate table table_name restart identity;
ただし、一部のバージョンとプラットフォームでは、構文エラーです。
その場合、シーケンスをリセットせずに切り捨て、別のSQLでシーケンスを変更できます。これを試してください:
truncate table table_name;
alter sequence seq_name start 1;
シーケンスをリセットして番号 1 から開始する最善の方法は、シーケンスを正常に切り捨てた後に次のコマンドを実行することです。
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
したがって、たとえば users テーブルの場合は次のようになります。
ALTER SEQUENCE users_id_seq RESTART WITH 1
次をチェック
ALTER SEQUENCE sequence_name RESTART WITH 1;
シーケンスをリセットする場合は、次のようにします。
setval('sequence_name', 0)
既存のシーケンス名を一覧表示する\ds
には、psql プロンプトで a を発行します。