Teradata 标识列和易失性/临时表问题的解决方法



我对 Teradata 有点陌生,不明白为什么我不能在易失性表中选择一个身份列。执行类似以下内容的操作时,我收到以下错误。

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;

错误:创建表为当前不支持标识列。

有没有办法在 Teradata 中的易失性/临时表中选择身份列?此错误有什么解决方法吗?另外,有谁知道为什么你不能在易失性表中选择标识列?(我已经习惯了SQL Server,这根本不是问题。

这确实是一个奇怪的限制,即使类型转换为 VarChar 也会失败并显示相同的错误消息。

但是有一个解决方法,将选择放在派生表中:

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;

最新更新