在AUTOINCREMENT中使用复合主键在SQLite数据库中创建表时出错

时间:2014-03-05 13:10:21

标签: android sqlite

mycode的

    final String createtabBook="CREATE TABLE IF NOT EXISTS BookMark(lid INTEGER AUTOINCREMENT,  bookdir TEXT , lastaddress TEXT,addresname TEXT PRIMARY KEY(bookdir,lastaddress));";
    db.execSQL(createtabBook);

logcat的:

03-05 18:29:31.708: I/System.out(17160): android.database.sqlite.SQLiteException: near "AUTOINCREMENT": syntax error: , while compiling: CREATE TABLE IF NOT EXISTS BookMark(lid INTEGER AUTOINCREMENT,  bookpath TEXT , lastchapter TEXT, PRIMARY KEY(bookpath,lastchapter));

我只想创建一个带有复合主键的表,这样它就是bookdir和lastaddress的组合,我也希望将盖子设置为自动增量。

1 个答案:

答案 0 :(得分:4)

要获取任何列自动增量的值,您需要编写它或将其声明为主键。

在SQLite中,声明 INTEGER PRIMARY KEY的列将自动增量

<强>编辑:

由于您无法在表格中定义多个PRIMARY KEY,因此您必须将bookdir,lastaddress列设为UNIQUE,并将lid列定义为PRIMARY KEY如下所示:

试试如下:

 final String createtabBook="CREATE TABLE IF NOT EXISTS BookMark(lid INTEGER PRIMARY KEY AUTOINCREMENT,  
  bookdir TEXT , lastaddress TEXT,addresname TEXT, UNIQUE(bookdir,lastaddress));";

在查询中的","列后面添加addresname TEXT,