我有这样的代码
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))')
这会在基表BUT中精细插入行,ID列根本不会自动递增。
我能做什么?任何想法?
发布于 2018-09-17 16:37:57
在sqlite中,只有一个整数列是主键时才会获得自动增量行为。复合键可防止自动增量生效。
您可以通过定义id
唯一的主键,但随后添加其他唯一约束来获得类似的结果id, col3
。
如果那仍然不是你想要的(比如,id根本不需要是唯一的),你可能必须使用触发器来使自动增量工作。
https://stackoverflow.com/questions/-100002657
复制相似问题