【发布时间】:2018-09-27 19:19:45
【问题描述】:
我对 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;
错误:CREATE TABLE AS 当前不支持标识列。
有没有办法在 Teradata 的易失性/临时表中选择标识列?此错误的任何解决方法?另外,有谁知道为什么您不能在 volatile 表中选择标识列? (我习惯了 SQL Server,这根本不是问题。)
【问题讨论】:
-
我还没有遇到这个特殊问题。如果我不得不解决它,我会做一个 CREATE VOLATILE DDL 指定列和列类型(就像一个常规的 CREATE TABLE 语句)。然后跟进一个 INSERT INTO... SELECT 语句。也许这会被允许。
-
Teradata 不支持易失性表中的标识列,我不认为。您可以将其设为整数列并使用 row_number 或类似的方式填充它。
-
也许,基于@Andrew 的评论
SELECT CAST(es.eventSettingID as INT) as eventSettingID...? -
感谢您的建议。我尝试了@JNevill 的演员想法,但收到了同样的错误。
-
该死!我想也许我们会很幸运。我会尝试创建您的 volatile 表,然后插入其中
CREATE MULTISET VOLATILE TABLE temp_events (eventSettingID INT, evt.lob WHATEVER) ON COMMIT PRESERVE ROWS然后INSERT INTO temp_events <your select statement here>;
标签: teradata temp-tables identity-column