[[toc]]
适用范围
MogDB5.0.+
问题概述
数据库中对象表上存在视图时,业务需要对表结构进行维护时报错:
ERROR: cannot alter type of a column used by a view or rule DETAIL: rule _RETURN on view v_test_view_table_ddl depends on column "name"
复制
此报错内容适于物所有版本MogDB。
解决方案
MogDB5.0.1始新增加特性
支持视图与其依赖项解耦,在其依赖项发生变更时视图可以通过触发条件自动编译。该特性通过新增的SIGHUP级别GUC参数view_independent控制启用,默认关闭。参数取值为true时,支持单独更新视图依赖项;取值为false时,行为保持前向兼容,即修改视图依赖项时报错。
-
当此特性启用时:
- 视图的依赖项可以单独进行修改,比如修改表、修改视图、修改函数等,无需强制删除视图;
- 支持查询视图时自动编译或者手动通过SQL语句(ALTER VIEW view_name COMPILE)编译视图。
实验验证
步骤 1 创建表
MogDB=# create table test_view_table_ddl (id int,name varchar(200)); CREATE TABLE
复制
步骤 2 创建视图
MogDB=# create view v_test_view_table_ddl as select * from test_view_table_ddl; CREATE VIEW
复制
步骤 3 修改表结构
MogDB=# alter table test_view_table_ddl modify name varchar(300); ERROR: cannot alter type of a column used by a view or rule DETAIL: rule _RETURN on view v_test_view_table_ddl depends on column "name"
复制
步骤 4 启动新特性
MogDB=# alter system set view_independent=on; ALTER SYSTEM SET
复制
步骤 5 修改表结构
MogDB=# alter table test_view_table_ddl modify name varchar(300); WARNING: pgxc_maintenance_mode is not allowed in postgresql.conf. Set to default (false). ALTER TABLE
复制
步骤 6 验证表结构是否变更成功
可见字段name长度已经从200变更为300
MogDB=# \d test_view_table_ddl Table "public.test_view_table_ddl" Column | Type | Modifiers --------+------------------------+----------- id | integer | name | character varying(300) |
复制
参考文档
https://docs.mogdb.io/zh/mogdb/v5.0/5.0.1
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年3月中国数据库排行榜:PolarDB夺魁傲群雄,GoldenDB晋位入三强
墨天轮编辑部
1743次阅读
2025-03-11 17:13:58
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1259次阅读
2025-03-06 16:45:38
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1253次阅读
2025-03-13 11:40:53
01. HarmonyOS Next应用开发实践与技术解析
若城
1185次阅读
2025-03-04 21:06:20
DeepSeek R1助力,腾讯AI代码助手解锁音乐创作新
若城
1169次阅读
2025-03-05 09:05:00
03 HarmonyOS Next仪表盘案例详解(二):进阶篇
若城
1166次阅读
2025-03-04 21:08:36
05 HarmonyOS NEXT高效编程秘籍:Arkts函数调用与声明优化深度解析
若城
1154次阅读
2025-03-04 22:46:06
04 高效HarmonyOS NEXT编程:ArkTS数据结构优化与属性访问最佳实践
若城
1148次阅读
2025-03-04 21:09:35
02 HarmonyOS Next仪表盘案例详解(一):基础篇
若城
1141次阅读
2025-03-04 21:07:43
06 HarmonyOS Next性能优化之LazyForEach 列表渲染基础与实现详解 (一)
若城
1137次阅读
2025-03-05 21:09:40
TA的专栏
热门文章
PostgreSQL 12.8 详解命令pg_rewind
2021-10-29 6966浏览
[译] Postgresql 清理更新频繁的表
2022-04-12 6313浏览
patroni 报错问题处理:CRITICAL: system ID mismatch, node pgsql_node1 belongs to a different cluster: 7052280560147471869 != 7052284163
2022-01-12 5138浏览
patroni 服务启报错:patroni.exceptions.PatroniFatalException
2022-01-10 4901浏览
数据库短连接风暴触发oracle bug 32164034
2021-11-18 4633浏览
最新文章
oracle补丁集
2024-07-21 218浏览
oracle 11.2.0.4补丁集 2023年10月份补丁集
2024-07-10 427浏览
PostgreSQL 启动报错处理 FATAL: the database system is starting up
2024-04-24 2726浏览
MySQL5.7 参数innodb_buffer_pool_instances与参数innodb_buffer_pool_size的关系
2023-12-08 300浏览
MySQL 5.7 参数innodb_buffer_pool_size 在线修改 | 配置文件 | 命令行
2023-12-08 436浏览
目录