Есть ли автоматическое увеличение в sqlite?

Я пытаюсь создать таблицу с автоматически увеличивающимся первичным ключом в Sqlite3 . Я не уверен, возможно ли это на самом деле, но я надеюсь, что мне нужно указать только другие поля.

Например:

CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));

Затем, когда я добавляю значение, я надеялся, что мне нужно будет сделать только следующее:

INSERT INTO people
VALUES ("John", "Smith");

Возможно ли это вообще?

Я использую sqlite3 под ] cygwin в Windows 7.

97
задан Filipp W. 8 June 2018 в 06:18
поделиться

1 ответ

То, что Вы делаете, исправить, но правильный синтаксис для 'автоматического инкремента' должен быть без пространства:

CREATE TABLE people (id integer primary key autoincrement, first_name string, last_name string);

(Также обратите внимание, что я изменил Ваш varchars на строки. Поэтому SQLite внутренне преобразовывает varchar в строку, итак, почему беспокойство?)

затем Ваша вставка должна быть на языке SQL, максимально стандартном:

INSERT INTO people(id, first_name, last_name) VALUES (null, 'john', 'doe');

, в то время как это верно, что, если Вы опускаете идентификатор, это будет автоматически увеличенный и присвоенный, я лично предпочитаю не полагаться на автоматические механизмы, которые могли измениться в будущем.

А отмечают на автоинкременте: хотя, поскольку многие указали, это не рекомендуется людьми SQLite, мне не нравится автоматическое повторное использование идентификаторов удаленных записей, если автоинкремент не используется. Другими словами, я как , что идентификатор удаленной записи никогда не будет появляться снова.

HTH

0
ответ дан 24 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: