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;