在 SQLite 数据库中使用带有 AUTOINCREMENT 列的组合键

Use of composite keys with an AUTOINCREMENT column in SQLite database

我创建了一个 table,其中有一列“_id”,它是一个带有 AUTOINCREMENT 的 INTEGER 类型。现在我知道 AUTOINCREMENT 上的列必须是 PRIMARY KEY ,如果我没记错的话,这就是语法。但是我想要复合键,所以我没有在列定义中使用 PRIMARY KEY 定义将“_id”声明为 (_id INTEGER PRIMARY KEY AUTOINCREMENT),而是将其声明为 (_id INTEGER AUTOINCREMENT, username TEXT UNIQUE, password TEXT, name TEXT, phonenumber TEXT, address TEXT, fine INTEGER, bookid INTEGER, PRIMARY KEY (_id, username, password))

但是它给出了一个运行时错误。当我们有一个 AUTOINCREMENT 字段时,是否必须在列定义本身中声明 PRIMARY KEY?

这是错误

07-18 12:47:22.916: E/AndroidRuntime(3423): Caused by: android.database.sqlite.SQLiteException: near "AUTOINCREMENT": syntax error (code 1): , while compiling: CREATE TABLE userdetails (_id INTEGER AUTOINCREMENT, username TEXT UNIQUE, password TEXT, name TEXT, phonenumber TEXT, address TEXT, fine INTEGER, bookid INTEGER, PRIMARY KEY (_id, username, password));

不,该列不需要是主键。但是,SQLite 仅在将一个键设置为主键时才允许 AUTOINCREMENT。这里多列设置为主键。因此其中之一的自动递增不起作用。

参考这个Whosebug的回答post :

Auto Increment on Composite Primary Key