2011-07-22 53 views
2

我有這樣自動遞增的複合主鍵 - SQLITE3 + Python的

c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER NOT NULL, col2 TEXT NOT NULL, col3 INTEGER, PRIMARY KEY(ID, col2))') 

此代碼的代碼給了我一個sqlite3.IntegrityError例外,儘管我非常肯定,我寫紀錄第一次。

所以,我想

c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER, col2 TEXT, col3 INTEGER, PRIMARY KEY(ID, col2))') 

這就將行中的基地表罰款,ID列是不會自動在所有遞增。

我該怎麼辦?任何想法?

回答

10

在sqlite中,只有一個整數列是主鍵時纔會獲得自動增量行爲。複合鍵防止自動增量生效。

您可以通過將id定義爲唯一主鍵,然後在id, col3上添加額外的唯一約束來獲得類似的結果。

如果這還不是你想要的(比方說,id不需要是唯一的),你可能必須使用觸發器來使自動增量工作。

+0

太棒了!感謝您解釋這一點。我想我會將ID作爲主鍵整數並在Col2上添加唯一約束。謝謝! –