复合主键上的自动增量 - Sqlite3 + Python

Bha*_*nan 2 python sqlite

我有这样的代码

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

这段代码给了我一个sqlite3.IntegrityError异常,即使我非常确定我是第一次写这个记录.

所以,我试过了

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

这会在表BUT中精细插入行,ID列根本不会自动递增.

我能做什么?任何的想法?

Sin*_*ion 11

在sqlite中,只有一个整数列是主键时才会获得自动增量行为.复合键可防止自动增量生效.

您可以通过定义id唯一的主键,但随后添加其他唯一约束来获得类似的结果id, col3.

如果那仍然不是你想要的(比如,id根本不需要是唯一的),你可能必须使用触发器来使自动增量工作.