Использование составных ключей со столбцом AUTOINCREMENT в базе данных SQLite
Я создал таблицу, в которой есть столбец "_id", который имеет тип INTEGER с AUTOINCREMENT. Теперь я знаю, что столбец, который находится в AUTOINCREMENT, должен быть ПЕРВИЧНЫМ КЛЮЧОМ, который является синтаксисом, если я не ошибаюсь. Но мне нужны композитные ключи, поэтому я не объявляю "_id" как (_id INTEGER PRIMARY KEY AUTOINCREMENT)
с определением PRIMARY KEY в определении столбца, но объявить его как (_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));
1 ответ
Нет, столбец не должен быть первичным ключом. Тем не менее, SQLite позволяет AUTOINCREMENT, только если один ключ установлен в качестве первичного ключа. Здесь несколько столбцов установлены как первичный ключ. Следовательно, автоматическое увеличение на одном из них не работает.
Обратитесь к ответу к этому сообщению stackru: