我有下表
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
。那会发生什么?
答案 0 :(得分:2)
我相信您正在寻找的解释可以在SQL数据定义语言 - 第5章:创建表格下的详细主题Process for Generating Identity Column Numbers中找到。标识列不用于提供将行加载到表中的准确顺序顺序。
如果您需要顺序标识符,则必须使用表中的最大值加上分配给要加载到表中的数据集的ROW_NUMBER()
,将自己保留在ETL中。否则,您可能需要重新考虑实现中是否确实需要序列id / row num。