Redshift drop有依赖关系的表
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束anal
千家信息网最后更新 2025年11月17日Redshift drop有依赖关系的表
今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束
analyticsprod=# DROP TABLE IF EXISTS facts.auto_events_bk_20170223;
ERROR: cannot drop table auto_events_bk_20170223 because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
通过\d+ auto_events_bk_20170223 查看表结构,发现并没有其他表的外键约束,所以排除;
然后通过\dv+命令在schema:facts下查看视图,但是发现没有任何view存在,但是view可能存在其他schema或db,
那么问题来了,如何在整个数据库中找到与这个表有依赖的的view?
这里AWS Redshift已经给我们提供了一个好的方法,参考链接:https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html
创建一个视图find_depend:
create view find_depend asselect distinct c_p.oid as tbloid,n_p.nspname as schemaname, c_p.relname as name,n_c.nspname as refbyschemaname, c_c.relname as refbyname,c_c.oid as viewoidfrom pg_catalog.pg_class c_pjoin pg_catalog.pg_depend d_pon c_p.relfilenode = d_p.refobjidjoin pg_catalog.pg_depend d_con d_p.objid = d_c.objidjoin pg_catalog.pg_class c_con d_c.refobjid = c_c.relfilenodeleft outer join pg_namespace n_pon c_p.relnamespace = n_p.oidleft outer join pg_namespace n_con c_c.relnamespace = n_c.oidwhere d_c.deptype = 'i'::"char"and c_c.relkind = 'v'::"char";
查询视图找到与表auto_events_bk_20170223相关的view:
analyticsprod=# select * from facts.find_depend where schemaname='facts' and name not in ('find_depend') order by name; tbloid | schemaname | name | refbyschemaname | refbyname | viewoid--------+------------+-------------------------+-----------------+-------------+--------- 879566 | facts | auto_events_bk_20170223 | public | map_routes2 | 965969 879566 | facts | auto_events_bk_20170223 | public | map_routes | 966155 879566 | facts | auto_events_bk_20170223 | public | map_edges | 1019697(3 rows)analyticsprod=# set search_path to public;analyticsprod=# \dv List of relations schema | name | type | owner--------+-----------------------+------+------- public | map_edges | view | fengw public | map_edges_group | view | fengw public | map_route_edges_group | view | fengw public | map_routes | view | fengw public | map_routes2 | view | fengw public | map_routes_group | view | fengw(6 rows)最后如果判断这些相关的view没有用的话,可以通过命令drop table auto_events_bk_20170223 cascade删除表,包括视图一同删除。
视图
命令
对象
可以通过
数据
数据库
方法
有用
结构
链接
问题
参考
开发
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
司法局网络安全宣传
为什么要干财务软件开发
为什么要建立网络安全应急预案
美国网络安全观
t130服务器硬盘设置
备用i代理服务器
中国膳食营养数据库
阿里云数据库安全解决方案
怎么手动显示数据库
网络技术三级的分数组成
网络安全等保试题
无法输出数据库
数据库需要加两个字段
网络安全管理办法明确了
上海翔军网络技术有限公司
戴尔730服务器远程管理
海外军团网络安全吗
随书光盘数据库
常州软件开发招聘
网络技术专业的自我评价
如何获取网站数据库的密码
网络安全手抄报模板免费
软件开发有哪些语种
网络安全班情分析
亚马逊数据库注册
从网络安全角度进行说明判断
数据库规范化的意思
提高软件开发速率采用什么语言
现代网络技术的英文
京科联通郑州网络技术有限公司