全局临时表未存储更新值,查询无更新行问题咨询
全局临时表无更新行问题排查与解决
先梳理你提供的SQL代码及潜在问题:
1. 语法错误(核心问题)
你的全局临时表声明存在两处语法问题,且缺少关键的事务保留属性:
- 列定义间缺少分隔逗号:
code varchar(5)后需添加逗号分隔下一列 - 临时表声明未闭合,且未指定提交时的数据保留规则:大部分数据库(如DB2)的全局临时表默认
ON COMMIT DELETE ROWS,即插入操作触发自动提交后,表中数据会被清空。
修正后的声明语句示例(以DB2为例,不同数据库语法略有差异):
declare global temporary table hierarchy ( code varchar(5), description varchar(30) ) on commit preserve rows;
on commit preserve rows是关键,它会让事务提交后保留临时表中的数据。
2. 插入逻辑验证
- 检查
table1中是否存在符合code like '_....'条件的数据:该匹配规则要求code是长度为5的字符串(首字符任意,后四位任意),若原表无符合条件的行,插入操作不会产生数据。 - 确认
table1中的30_description列存在且有有效值,避免因列名错误导致插入失败或空值。
3. 会话与权限检查
- 全局临时表是会话级资源,需确保插入和查询操作在同一个会话中执行,切换会话后无法访问其他会话的临时表数据。
- 确认当前用户拥有
table1的查询权限,以及临时表的插入、查询权限。
内容的提问来源于stack exchange,提问作者Pop23
相关产品推荐
相关产品推荐

