38

テーブルを切り捨てた後、間違ったシリアル ID を取得するために SELECT lastval() を使用します。

テーブルを切り捨てるときに SELECT lastval() を使用すると、間違った ID/

4

6 に答える 6

87

TRUNCATESQL コマンドを使用します。

単一のテーブルの場合、構文は次のとおりです。

TRUNCATE TABLE table_name RESTART IDENTITY;

複数のテーブルの場合:

TRUNCATE TABLE table_foo, table_bar RESTART IDENTITY;

機能:

切り捨てられたテーブルの列が所有するシーケンスを自動的に再開します。

詳細はこちら: TRUNCATE @ postgresql.org

于 2012-12-21T12:15:02.780 に答える
22

以下は、シーケンスをリセットする標準的な方法です。

truncate table table_name restart identity;

ただし、一部のバージョンとプラットフォームでは、構文エラーです。

その場合、シーケンスをリセットせずに切り捨て、別のSQLでシーケンスを変更できます。これを試してください:

truncate table table_name;
alter sequence seq_name start 1;
于 2014-04-15T17:53:34.730 に答える
7

シーケンスをリセットして番号 1 から開始する最善の方法は、シーケンスを正常に切り捨てた後に次のコマンドを実行することです。

ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1

したがって、たとえば users テーブルの場合は次のようになります。

ALTER SEQUENCE users_id_seq RESTART WITH 1
于 2017-12-07T15:12:36.627 に答える
4

次をチェック

ALTER SEQUENCE sequence_name RESTART WITH 1;
于 2014-09-17T15:58:39.227 に答える
2

シーケンスをリセットする場合は、次のようにします。

setval('sequence_name', 0)

既存のシーケンス名を一覧表示する\dsには、psql プロンプトで a を発行します。

于 2012-12-21T11:42:23.643 に答える