Teradata 标识列和 volatile/temp 表问题的解决方法
Workaround for Teradata identity columns and volatile/temp tables issue
我对 Teradata 有点陌生,无法理解为什么我不能 select 易失性 table 中的标识列。执行类似下面的操作时,出现以下错误。
create multiset volatile table Temp_Events as
(
select es.eventSettingId, -- this is an identity column
evt.lob
from ForecastDevDW.cal_eventSettings es
join ForecastDevDW.cal_eventTypes evt
on evt.eventTypeId = es.eventTypeId
)
with data
primary index (eventSettingId)
on commit preserve rows;
ERROR: CREATE TABLE AS currently does not support Identity Columns.
有什么方法可以在 Teradata 的 volatile/temporary table 中 select 标识列?此错误的任何解决方法?另外,有谁知道为什么不能 select volatile table 中的标识列? (我习惯了 SQL 服务器,这根本不是问题。)
这确实是一个奇怪的限制,即使类型转换为 VarChar 也会失败并显示相同的错误消息。
但是有一个解决方法,将 Select 放在 Derived Table:
create multiset volatile table Temp_Events as
(
select *
from
(
select es.eventSettingId, -- this is an identity column
evt.lob
from ForecastDevDW.cal_eventSettings es
join ForecastDevDW.cal_eventTypes evt
on evt.eventTypeId = es.eventTypeId
) as dt
)
with data
primary index (eventSettingId)
on commit preserve rows;
我对 Teradata 有点陌生,无法理解为什么我不能 select 易失性 table 中的标识列。执行类似下面的操作时,出现以下错误。
create multiset volatile table Temp_Events as
(
select es.eventSettingId, -- this is an identity column
evt.lob
from ForecastDevDW.cal_eventSettings es
join ForecastDevDW.cal_eventTypes evt
on evt.eventTypeId = es.eventTypeId
)
with data
primary index (eventSettingId)
on commit preserve rows;
ERROR: CREATE TABLE AS currently does not support Identity Columns.
有什么方法可以在 Teradata 的 volatile/temporary table 中 select 标识列?此错误的任何解决方法?另外,有谁知道为什么不能 select volatile table 中的标识列? (我习惯了 SQL 服务器,这根本不是问题。)
这确实是一个奇怪的限制,即使类型转换为 VarChar 也会失败并显示相同的错误消息。
但是有一个解决方法,将 Select 放在 Derived Table:
create multiset volatile table Temp_Events as
(
select *
from
(
select es.eventSettingId, -- this is an identity column
evt.lob
from ForecastDevDW.cal_eventSettings es
join ForecastDevDW.cal_eventTypes evt
on evt.eventTypeId = es.eventTypeId
) as dt
)
with data
primary index (eventSettingId)
on commit preserve rows;