2016-04-18 9 views
1

ID列の自動インクリメントを使用するTeradataでテーブルを作成したいとします。コードは動作しますが、私はIDがなぜ100001、100002のように始まるのか分かりません。start with 1 increment by 1と書かれています。Python Teradataの自動インクリメントは、1ではなく6桁の数字で始まりますか?

これは私のコードです:

cur = connection.cursor() 

が表に

insert_stmt = """INSERT INTO my_table (word,country) VALUES(?,?);""" 
mydata=("hello","USA") 
my_query=cur.execute(insert_stmt,my_data) 

を挿入テーブル

create_stmt = """CREATE TABLE my_table, 
           NO FALLBACK, 
           NO BEFORE JOURNAL, 
           NO AFTER JOURNAL, 
           CHECKSUM = DEFAULT 
           ( 
           id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 NO CYCLE), 
           word VARCHAR(500) CHARACTER SET UNICODE, 
           country VARCHAR(50) 
           ) 
           PRIMARY INDEX (id);""" 
cur.execute(create_stmt) 

を作成

sel_all_stmt="sel * from my_table" 
cur.execute(sel_all_stmt) 
result = cur.fetchall() 
をテストするために、すべてを選択します

[(100001, u'hello', u'USA'), (1, u'hello', u'USA'), (200001, u'hello', u'USA'), (400001, u'hello', u'USA'), (300001, u'hello', u'USA')] 

idが長いので、なぜすべてのアイデア:

私は自動インクリメントは次のようになり、これは私が得たものであるかを確認するinsert文を数回走りましたか?

答えて

1

シーケンシャル処理は、大規模な並列DBMSの目的を破ります。

TeradataのIDENTITYは、1つのシーケンスではなく、複数のシーケンスが並行しています(btw、標準SQL準拠)。各パースエンジン(PE)と各AMPは一連の値を要求し、順次割り当てます。したがって、PE/AMP 内の行に割り当てられた番号は、の順番ですが、PE/AMPではなく順番になります。

More details can be found in the manuals.

関連する問題