我根据以下需求创建了一个表:
稍后在我的代码中我使用游标,所以我在表格中创建了一个列_ID
由于我只想使用自己的主键,因此我设置了我的专栏'条形码'作为唯一的主键。
所以表格如下所示:
CREATE TABLE product (
_id INTEGER,
barcode TEXT PRIMARY KEY NOT NULL,
title TEXT NOT NULL,
categoryid INTEGER NOT NULL,
FOREIGN KEY (categoryid) REFERENCES category (_id) ON DELETE CASCADE)
上面的表格是正确创建的,但我需要_id列自动增量,所以我修改了表格如下:
CREATE TABLE product (
_id INTEGER AUTOINCREMENT NOT NULL,
barcode TEXT PRIMARY KEY NOT NULL,
title TEXT NOT NULL,
categoryid INTEGER NOT NULL,
FOREIGN KEY (categoryid) REFERENCES category (_id) ON DELETE CASCADE)
调试我的应用时,我收到以下错误:
near "AUTOINCREMENT": syntax error (code 1): , while compiling:
CREATE TABLE product (_id INTEGER AUTOINCREMENT NOT NULL,barcode TEXT PRIMARY KEY NOT NULL,title TEXT NOT NULL,categoryid INTEGER NOT NULL, FOREIGN KEY (categoryid) REFERENCES category (_id) ON DELETE CASCADE)
我需要条形码列是唯一的主键,但_ID列要同时自动增量。
我可以使用一个由_ID和条形码组成的复合主键,这样就可以将_ID设置为自动增量而不会出现问题,但这样做可以插入多个产品,条形码相同(具有不同的_ID)并且我想要条形码在整个表格中都是独一无二的。
那么如何摆脱这个?
答案 0 :(得分:2)
在这种情况下你能否使用ROWID?它可以满足您的所有要求,并且内置于大多数sqlite表中。 在您的查询中,只需从Z中选择X,Y,ROWID。
答案 1 :(得分:0)
来自链接:https://www.sqlite.org/autoinc.html,自动增量无法设置为非主要字段,因此我认为您可以尝试以下解决方案,它可能有所帮助:SQLite auto-increment non-primary key field