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,我认为这应该有所帮助。
在 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,我认为这应该有所帮助。