Как мне создать AUTOINCREMENT
поле
Краткий ответ: столбец объявлен
INTEGER PRIMARY KEY будет
автоинкремент.
Вот длинный ответ: если вы
объявить столбец таблицы как
INTEGER PRIMARY KEY, тогда всякий раз, когда вы
вставить NULL в этот столбец
таблица, NULL автоматически
превращается в целое число, которое является одним
больше, чем наибольшее значение этого
столбец над всеми другими строками в
table, или 1, если таблица пуста. (Если
максимально возможный целочисленный ключ,
9223372036854775807, затем неиспользованный
Значение ключа выбирается случайным образом.) Для
Например, предположим, у вас есть таблица, как
это:
CREATE TABLE t1( a INTEGER PRIMARY
KEY, b INTEGER );
С этой таблицей
заявление
INSERT INTO t1 VALUES(NULL,123);
является
логически эквивалентно высказыванию:
INSERT INTO t1 VALUES((SELECT max(a)
FROM t1)+1,123);
Есть функция
по имени sqlite3_last_insert_rowid()
который вернет целочисленный ключ для
самая последняя операция вставки.
Обратите внимание, что целочисленный ключ
больше, чем самый большой ключ, который был
в таблице непосредственно перед вставкой.
Новый ключ будет уникальным во всем
ключи в данный момент в таблице, но это
может совпадать с ключами, которые были
ранее удалены из таблицы. к
создавать ключи, которые являются уникальными по
время жизни таблицы, добавить
AUTOINCREMENT ключевое слово для INTEGER
ПЕРВИЧНАЯ КЛЮЧЕВАЯ декларация. Тогда ключ
выбрано будет на один больше чем
самый большой ключ, который когда-либо существовал в
этот стол. Если возможно
ключ ранее существовал в этом
таблица, то вставка не удастся с
код ошибки SQLITE_FULL.