Использование составных ключей со столбцом 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:

Автоматическое увеличение составного первичного ключа

Другие вопросы по тегам