使用自动递增的字段和参照完整性约束创建易失性表

时间:2016-02-10 18:56:09

标签: sql teradata volatile create-table

作为一名初级SQA,我对Teradata中的表没有读/写访问权限 - 只能对视图进行读取访问。我最近发现了挥发性的桌子,它们让我的生活变得如此简单。虽然它们非常有用,但我想知道是否可以使用自动递增的主键(或索引)创建易失性表,以及参照完整性约束?

以下是我一直在使用的SQL。

CREATE VOLATILE TABLE Article (
    user_id INTEGER GENERATED BY DEFAULT AS IDENTITY
    (
        START WITH 1
        INCREMENT BY 20
        MAXVALUE 2147483647
    )
    ,user_url varchar(1000) NOT NULL
    ,user_title varchar(200)
    --,PRIMARY KEY (art_id)
) ON COMMIT PRESERVE ROWS;

我收到此代码的错误消息:

CREATE TABLE Failed. 5784: Illegal usage of Identity Column user_id

正如您所看到的,我尝试创建一个自动递增的字段,但还没有尝试实现任何参照完整性约束。

总而言之,我的问题是:

1. Can a field of a volatile table be automatically incremented and, if
   possible, how is this accomplished?
2. Can referential integrity constraints be included in creating a volatile 
   table and, if possible, how is this accomplished?

如果有人能够解释我的问题,我会非常感激。感谢。

1 个答案:

答案 0 :(得分:2)

按照这个: http://www.info.teradata.com/HTMLPubs/DB_TTU_14_00/index.html#page/General_Reference/B035_1096_111A/Database.26.1905.html

  

非法使用标识列user_id:标识列在临时表或易失性表中定义。有可能   只能在永久表中定义。

但是,还有其他方法可以在Teradata的易失性表中生成代理键,但仅限于在表中插入数据时,而不是在创建表时: http://forums.teradata.com/forum/database/generate-surrogatekey-with-a-huge-table

一般来说:

  1. 您可以在活动会话中拥有1000个易失性表。
  2. 不允许使用CHECK和REFERENTIAL约束。
  3. 不允许使用DEFAULT条款。