Teradata自增量

定義兩個表以下:
create table TEST.i1 (
i INTEGER GENERATED BY DEFAULT AS IDENTITY
(START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO CYCLE
),
STR VARCHAR(20)
) unique primary index i1 (i)
;數據庫

[@more@].net

create table TEST.i2 (
i INTEGER GENERATED BY DEFAULT AS IDENTITY
(START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO CYCLE
),
STR VARCHAR(20)
) unique primary index i2 (i)設計

往表i2裏面插入五條數據(執行5次下列語句):
INSERT INTO TEST.i2
(STR)
VALUES('1')get

將i2的數據導入到i1:
INSERT INTO TEST.i1
SELECT * FROM TEST.i2table

再往i1裏面插入數據:
INSERT INTO TEST.i1
(STR)
VALUES('2')class

會報錯: Duplicate unique prime key error in TEST.i1im

說明:
自增量每次自增操做後,會作記錄(貌似會記錄當前最大值),如表i1,我插入一條數據後,最大是1,下次再插入,自增後將爲2,此時,若是表中有爲2的值(人爲插入的),將會報Duplicate錯誤。一樣,若表中有i=3的數據,咱們第二次插入能夠成功,第三次就會報Duplicate錯。
因此,在TD中設計數據庫表的時候,儘可能少設計自增量字段,實在要用,務必保證不會對此字段顯式賦值,不然此Duplicate錯不免。error

對於多AMP的自增量問題,有待補充。數據

相關文章
相關標籤/搜索