为什么Teradata身份列没有增加1?

时间:2015-11-11 15:05:38

标签: teradata

我有下表

CREATE SET TABLE myTab,FALLBACK,NO BEFORE JOURNAL,NO AFTER JOURNAL,CHECKSUM = DEFAULT,DEFAULT MERGEBLOCKRATIO
     (
      my_id BIGINT GENERATED ALWAYS AS IDENTITY
           (START WITH 1 
            INCREMENT BY 1 
            MINVALUE 1 
            MAXVALUE 922337203685477580 
            NO CYCLE),
      created_by VARCHAR(200) )
UNIQUE PRIMARY INDEX ( my_id );  

当我开始对此表(INSERT INTO myTab (created_by) VALUES ('test'))进行密码时,以下是自动生成的my_id的值

my_id
1
100,001
100,002
200,001
300,001
400,001
500,001
500,002
600,001

我希望得到1,2,3。 。 。增加1.我读了teradata explanation但仍然不明白。为什么它会随机增加?这样我很快就会到达MAXVALUE 922337203685477580。那会发生什么?

1 个答案:

答案 0 :(得分:2)

我相信您正在寻找的解释可以在SQL数据定义语言 - 第5章:创建表格下的详细主题Process for Generating Identity Column Numbers中找到。标识列不用于提供将行加载到表中的准确顺序顺序。

如果您需要顺序标识符,则必须使用表中的最大值加上分配给要加载到表中的数据集的ROW_NUMBER(),将自己保留在ETL中。否则,您可能需要重新考虑实现中是否确实需要序列id / row num。