为什么 Teradata 标识列不递增 1?

Why doesn't Teradata identity column increment by 1?

我有以下table

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 );  

当我开始插入这个 table 时(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。那么会发生什么?

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

如果你想要一个顺序标识符,你必须自己在你的 ETL 中维护它,结合 table 中的最大值加上分配给你的数据集的 ROW_NUMBER()加载到 table。否则,您可能需要重新考虑在您的实现中是否确实需要序列 id/row num。