我有一个表,我想从中删除很多行,但由于内存限制而失败。我看到一个建议“简单地”将我不想删除的所有行复制到新表中,删除旧表,然后将新表重命名为旧表的名称。除了依赖于原始表的其他对象外,这很好。据我所知,这意味着我必须放弃级联,然后重新创建依赖于原始表的所有内容。
有没有办法编写依赖于原始表的所有内容,以便我可以轻松地在 pgadmin 或 psql 中重新创建它们?
或者,有没有办法忽略依赖关系足够长的时间来删除旧表并将新表重命名为旧表的名称?
我相信这就是 pg_repack 的工作方式,所以一定有办法。
DROP TABLE example CASCADE;
会掉表
example
。并删除REFERENCES
指向该表的所有约束。所以替换表后,您还需要重建引用。
获取您可以使用的依赖
pg_dump --schema-only
项,然后 grep forREFERENCES example(
在表中存在所需数据之前,您将无法重建引用。