临时表不存储更新的值



我一直在尝试创建一个临时表并更新它,但当我查看临时表时,它没有显示任何更新的行

declare global temporary table hierarchy (
code varchar(5)
description varchar(30);
INSERT INTO session.hierarchy
SELECT code, 30_description
FROM table1
WHERE code like '_....';
SELECT *
FROM session.hierarchy;

这是一个常见问题。

当将DGTT与Db2(声明全局临时表(一起使用时,您需要知道默认情况是在COMMIT操作之后丢弃所有行。这就是插入后表显示为空的原因——如果启用了自动提交,则会删除行。如果这不是您想要的,那么在声明表时应该使用on commit preserve rows子句。

在创建存储过程时,with replace选项也非常重要,这对于开发和测试来说通常是最友好的,并且不是默认选项。否则,如果同一会话尝试重复DGTT的声明,则第二次和随后的尝试将失败,因为DGTT已经存在。

有时使用on rollback preserve rows对问题确定也很有意思,但这种方法不太常用。

使用DGTT时,主要优点之一是可以安排取消标记表的填充(插入、更新(,如果有数百万行要添加到DGTT中,这可以极大地提高性能。

因此建议:

declare global temporary table ... (   )...
not logged
on commit preserve rows
with replace;

对于DPF安装,还应考虑使用distribute by hash (...)以获得最佳性能。

相关内容

  • 没有找到相关文章

最新更新