PostgreSQL - 在级联上截断表并用 1 重置所有层次序列

YCF*_*F_L 20 postgresql sequence truncate

在级联上截断表时,有什么方法可以重置所有表序列。

我已经阅读了这篇文章如何在 postgres 中重置序列并用新数据填充 id 列?

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');
Run Code Online (Sandbox Code Playgroud)

它仅适用于一个序列,但我的问题是重新启动截断表的所有序列。

考虑当我使用TRUNCATE sch.mytable CASCADE;它影响3个相关表,这意味着三个序列,是否有任何解决方案可以一次性重新启动此序列。

a_h*_*ame 38

TRUNCATE语句有一个附加选项RESTART IDENTITY,用于重置与表列关联的序列。

TRUNCATE sch.mytable RESTART IDENTITY CASCADE;
Run Code Online (Sandbox Code Playgroud)

如果CASCADE已定义,则重置所有受影响表的序列。