如何在PostgresQL中显示所有无效的对象[英] How to show all invalid objects in PostgresQL

本文是小编为大家收集整理的关于如何在PostgresQL中显示所有无效的对象的处理方法,想解了如何在PostgresQL中显示所有无效的对象的问题怎么解决?如何在PostgresQL中显示所有无效的对象问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

寻找视图,我可以列出 PostgreSQL 中的所有"无效"对象.在 Oracle 中,我们可以使用 dab_objects.status 列,但我不确定在 PostgreSQL 中是否有简单的方法来做这样的事情.

也许,我可以使用以下代码检查无效索引.我怎样才能为其他对象做到这一点?

SELECT pg_class.relname 
FROM pg_class, pg_index 
WHERE pg_index.indisvalid = false 
AND pg_index.indexrelid = pg_class.oid;

推荐答案

我认为你不必检查其他任何东西,因为其他对象在 PostgreSQL 中不会变得无效.

Oracle 和 PostgreSQL 在这方面的工作方式完全不同:

  • 在Oracle 中,您始终可以ALTER 一个对象(例如表),即使存在依赖对象(例如视图).然后依赖对象变得无效并且必须重新编译.

  • 在 PostgreSQL 中,您不能 ALTER 以使这些依赖对象无效的方式具有依赖对象的对象.您必须删除并重新创建依赖对象.

失败的CREATE INDEX命令会留下无效的索引.

本文地址:https://www.itbaoku.cn/post/1764082.html