达梦数据库修改字段信息采坑记

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)的原因,写上模式名称才会更新导航栏表属性中的字段信息( 虽然文档中的模式名是可选的,不写也可以)。

猜你喜欢

转载自blog.csdn.net/besto229/article/details/106194754