Teradata 创建全局临时 table

Teradata create global temporary table

在 Teradata 中,我想创建一个全局临时 table,然后在其他查询中引用这个全局 table。我不想创建一个 volatile table 因为我正在通过另一个前端使用 Teradata 并且该前端必须能够判断临时 table 是否存在,因此 volatile tables 不是一个选项,因为它不存在于数据字典中。

这是我创建临时 table hihihi 的代码。

create set global temporary table hihihi as 
(select 
* 
from 
db.a_permanent_table) 
with no data 
on commit preserve rows;

select * from hihihi;

根据我所做的研究,我无法使用

with data

临时 table 的选项(例如,请参阅此 link)。所以我必须使用

no data

选项。我认为它还说当我引用这个临时 table 时,数据将 "materialize"。

然而,当我执行如下 select 时

select * from hihihi;

什么都没有返回?我对全局临时 tables 的理解缺少什么?

全局临时 table 实际上只是 table 的定义。当用户访问 table 时,它仅为该用户实现。如果另一个用户访问 table,另一个完全独立的实例将被具体化。如果您访问临时 table 的第一条语句不是插入(例如您的 select *),它将没有行。

向下滚动到示例部分 here,我认为这应该有所帮助。