SQLite: вопросы автоинкремента первичного ключа - PullRequest
15 голосов
/ 15 декабря 2011

У меня следующий запрос SQLite:

CREATE TABLE Logs ( Id integer IDENTITY (1, 1) not null CONSTRAINT PKLogId PRIMARY KEY, ...
  1. IDENTITY (1, 1) -> Что это значит?
  2. PKLogId что это?Кажется, это нигде не определено
  3. Я хочу, чтобы Id было integer primary key с autoincrement.Я хотел бы иметь возможность вставить в эту таблицу Logs опуская столбец Id в моем запросе.Я хочу, чтобы Id автоматически добавлялся и увеличивался.Это возможно?Как я могу это сделать?

В тот момент, когда я пытаюсь вставить без Id, я получаю:

Error while executing query: Logs.Id may not be NULL

Ответы [ 3 ]

56 голосов
/ 15 декабря 2011

Я не уверен, используете ли вы SQLite в соответствии с синтаксисом вашего примера.

Если да, вас может заинтересовать FAQ по SQLite # 1: Как создать поле AUTOINCREMENT? :

Краткий ответ: столбец, объявленный INTEGER PRIMARY KEY, будет автоинкремент.

11 голосов
/ 15 декабря 2011

Измените его на:

CREATE TABLE Logs ( Id integer PRIMARY KEY,....
0 голосов
/ 23 июля 2014

Если вам, вас может заинтересовать SQLite FAQ # 1: Как мне создать поле AUTOINCREMENT?:

Краткий ответ: столбец, объявленный INTEGER PRIMARY KEY, будет автоматически увеличиваться.

Это на самом деле не совсем точно.Целочисленный первичный ключ действительно будет увеличиваться, однако, если таблица удаляет все строки, она начинается снова с начала. Важно, если вы хотите, чтобы все связанные записи были правильно связаны, чтобы использовать описание автоинкремента после объявления первичного ключа в целочисленном поле.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...