1. 概述
- 目的:修改表空间中所有表的xxx字段的长度。
- 实现:通过SQL进行修改。
- 问题:导航栏 — 模式 — 表空间 — 表 — 右键查看表信息,字段长度没修改到。
- 工具:DM管理工具(达梦自带的数据库管理工具)。
2. 过程
2.1 问题出现
-- 通过SQL查出xx字段长度满足的要求的表,拼接出修改字段长度的SQL
SELECT 'ALTER TABLE ' || t.table_name || ' MODIFY xxx VARCHAR(1);' AS str
FROM user_tab_columns t
WHERE t.column_name='xxx' AND t.data_length > 1;
-- 执行拼接好的SQL,查看表属性,字段长度没改变。
2.2 刷新、事务提交尝试
刷新表、表空间、模式、连接都没有效果。 看来得出大招,重启工具;关闭工具提示事务未提交,难得是这个原因。 执行 COMMIT,还是不行(后面发现这个事务是查询语句的(╯︵╰))。
2.3 检查SQL
SQL没写对,陷入自我怀疑(我使用的是Oracle的SQL语句)。 只能看看达梦官方文档怎么说了。
-- 文档中的SQL 示例:
ALTER TABLE PRODUCTION.PRODUCT_REVIEW MODIFY NAME VARCHAR(8) ;
sql并没有什么问题。
2.4 验证是否导航栏的表信息没更新
- 通过最开始的查询SQL,发现字段长度不满足要求的数据已经没有了。
- 通过idea的database连接数据库,发现字段长度已经修改到了。
3. 总结
达梦的“DM管理工具”有坑。
直接在表属性中修改字段长度就都能改到;用SQL修改,导航栏那里就修改不到,但是实际是修改成功了的。
SQL修改后怎么更新 ,刷新是搞不定的。
4. 问题解决
SQL中没通过模式去获取表名(模式名.table_name)的原因,写上模式名称才会更新导航栏表属性中的字段信息( 虽然文档中的模式名是可选的,不写也可以)。