web-dev-qa-db-ja.com

PostgreSQL-カスケードでテーブルをトランケートし、すべての階層シーケンスを1でリセットします

カスケードでテーブルを切り捨てるときに、テーブルのすべてのシーケンスをリセットする方法はありますか?.

私はすでにこの投稿を読んでいます postgresでシーケンスをリセットし、id列に新しいデータを入力する方法

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');

これは1つのシーケンスでのみ機能しますが、私の問題は、切り捨てられたテーブルのすべてのシーケンスを再起動することです。

TRUNCATE sch.mytable CASCADE;これは3つの関連テーブルに影響します。つまり、3つのシーケンスを意味します。このシーケンスをワンショットで再開する解決策はありますか?.

10
YCF_L

TRUNCATEステートメントには、テーブル列に関連付けられたシーケンスをリセットする追加のオプションRESTART IDENTITYがあります。

TRUNCATE sch.mytable RESTART IDENTITY CASCADE;

CASCADEが定義されている場合、影響を受けるすべてのテーブルのシーケンスがリセットされます。

21