【问题标题】:How to show all invalid objects in PostgresQL如何在 PostgresQL 中显示所有无效对象
【发布时间】:2016-08-24 05:16:00
【问题描述】:

寻找视图,我可以列出 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 database-indexes


    【解决方案1】:

    我认为您不必检查其他任何内容,因为其他对象在 PostgreSQL 中不会变为无效。

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

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

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

    失败的CREATE INDEX 命令可能会留下无效的索引。

    【讨论】:

    • 很好的解释。在该区域中只应考虑索引。对吗?
    • 据我所知,是的。
    • @LaurenzAlbe我想我错误地否决了你的答案。
    • @LaurenzAlbe 实际上,我今天看到,我昨天对答案投了反对票,并且由于投票已经锁定,我不能取消投票,只有当答案时我才能更改我的投票已编辑,我想取消投票,因为答案对我有用。抱歉弄错了。
    • 编辑所以你可以做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多