PostgreSQLテーブルの主キーをリセットして、データが入力されたテーブルで再び1から開始する方法はありますか?
現在、1000000以上の数値を生成しています。既存のデータをすべてそのままにして、すべてを1にリセットして開始する必要があります。
シーケンスをリセットして番号1から開始する最良の方法は、次を実行することです。
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
したがって、たとえばusers
テーブルの場合は次のようになります。
ALTER SEQUENCE users_id_seq RESTART WITH 1
@bluishは、自動インクリメントされた主キーを使用して実際に新しいレコードを挿入しますが、この方法で明示的にシーケンスを使用するのと同じです。
INSERT INTO MyTable (id, col1, ...) VALUES (MySeq.nextval(), val1, ...)
したがって、最初のIDを1にするには、シーケンスを0に設定する必要があります。ただし、範囲外なので、ALTER SEQUECEステートメントを使用する必要があります。たとえば、テーブルメニューにnumberという名前のシリアルフィールドがある場合、例:
ALTER SEQUENCE menu_number_seq RESTART
仕事を完璧にします。