【发布时间】:2015-01-09 16:37:46
【问题描述】:
我根据以下需求创建了一个表:
稍后在我的代码中我使用游标,因此我在表中创建了一个列 _ID
因为我只想使用我自己的主键,所以我将我的列 'barcode' 设置为唯一的主键。
所以表格如下所示:
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)的产品,并且我想要条形码在整个表中是唯一的。
那么如何摆脱它呢?
【问题讨论】: