我有柱column有character varying(20)型,我想将它提高到50
ALTER TABLE table ALTER COLUMN column TYPE character varying(50);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误view view_name depends on column "column".我想知道如何在不丢弃和重新创建大约10个依赖视图的情况下更改列?
Ruu*_*uut 10
您可以在此博客上找到您的问题的答案
在修改现有对象时,PostgreSQL非常严格.通常,当您尝试ALTER TABLE或REPLACE VIEW时,它会告诉您无法执行此操作,因为还有另一个对象(通常是视图或物化视图),这取决于您要修改的对象.似乎唯一的解决方案是DROP依赖对象,对目标对象进行所需的更改,然后重新创建丢弃的对象.
这是繁琐和繁琐的,因为那些依赖对象可以具有进一步的依赖性,其也可以具有其他依赖性等等.我创建了实用功能,可以在这种情况下提供帮助.
用法非常简单 - 你只需要打电话:
select deps_save_and_drop_dependencies(p_schema_name, p_object_name);您必须传递两个参数:架构的名称和该架构中对象的名称.该对象可以是表,视图或物化视图.该函数将删除依赖于的所有视图和物化视图,
p_schema_name.p_object_name并保存DDL,以便在辅助表中恢复它们.当你想要恢复那些被删除的对象时(例如,当你完成modyfing时
p_schema_name.p_object_name),你只需要进行另一个简单的调用:
select deps_restore_dependencies(p_schema_name,p_object_name);并且将重新创建已删除的对象.
这些功能需要注意:
- 依赖层次结构
- 在层次结构中删除和创建视图/物化视图的正确顺序
- 恢复意见/物化视图的评论和授权
| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |