后台
在PostgreSQL中删除(或替换)对象时,如果存在依赖项,删除将失败(不指定CASCADE
)。
问题
数据库返回的错误消息未列出依赖对象。
示例解决方案
查询可能类似于:
SELECT * FROM information_schema i, pg_depend pd WHERE
i.object_id = pd.object_id AND
i.object_type = 'TABLE' AND
i.object_schema = 'public' AND
i.object_name = 'table_with_dependents';
字符串objid
不见了。
相关
- http://postgresql.1045698.n5.nabble.com/information-schema-problem-td2144069.html
- http://www.alberton.info/postgresql_meta_info.html的
问题
如何按名称和类型生成依赖对象的列表?
6条答案
按热度按时间ghg1uchk1#
建议的解决方案不适用于我与postgresql 9.1.4
这个方法奏效了:
字符串
pxq42qpu2#
简单的方法是:
字符串
e1xvtsh33#
在查询中包括嵌套视图,如下所示:
字符串
如果您关心特定的表属性,请将以下内容添加到递归CTE的顶部:
型
erhoui1w4#
对于PostgreSQL 9.3以后的版本,使用以下视图和函数来显示任何用户对象依赖关系。我还更新了https://wiki.postgresql.org/wiki/Pg_depend_display。
字符串
jpfvwuh45#
pg_constraint
包含数据库中的所有约束,您可以使用所有外键约束中的confrelid
和conrelid
列出依赖表的oid
查询如下所示
select confrelid,conrelid from pg_constraint where contype='f';
个3gtaxfhh6#
基于Kong Man的回答,下面的CTE返回与给定表/视图交互的所有表和视图。在PostgreSQL 15.3中测试。
CTE末尾的特定模式和表的使用、过滤示例:
字符串
返回引用它的所有表和视图:x1c 0d1x
型