Я пытаюсь создать таблицу с автоинкрементом primary key
в 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.
select rowid from people;
Да, это возможно. Согласно SQLite FAQ :
источник
На сегодняшний день - июнь 2018 г.
Вот что говорится в официальной документации SQLite по этому поводу (полужирный и курсив - мои):
источник
Вы это читали? Как создать поле AUTOINCREMENT.
источник
Не следует указывать
AUTOINCREMENT
ключевое слово рядомPRIMARY KEY
. Пример создания первичного ключа автоинкремента и вставки:дам:
источник
Помимо rowid, вы можете определить собственное поле автоматического увеличения, но это не рекомендуется. Когда мы используем автоматически увеличиваемый rowid, это всегда будет лучшим решением.
Подробную информацию читайте здесь .
источник
SQLite AUTOINCREMENT - это ключевое слово, используемое для автоматического увеличения значения поля в таблице. Мы можем автоматически увеличивать значение поля, используя ключевое слово AUTOINCREMENT при создании таблицы с определенным именем столбца, чтобы автоматически увеличивать его.
Ключевое слово AUTOINCREMENT можно использовать только с полем INTEGER. Синтаксис:
Основное использование ключевого слова AUTOINCREMENT следующее:
Для примера см. Ниже: Предположим, что таблица КОМПАНИЯ создается следующим образом:
Теперь вставьте следующие записи в таблицу TB_COMPANY_INFO:
Теперь выберите запись
источник
Я знаю, что этот ответ немного запоздал.
Моя цель в этом ответе - дать ссылку всем, если они столкнутся с таким типом проблемы с SQLite сейчас или в будущем, и им будет сложно с этим.
Теперь, оглядываясь на ваш запрос, он должен быть примерно таким.
Это работает с моей стороны. Вот так,
На всякий случай, если вы работаете с SQLite, я предлагаю вам проверить DB Browser для SQLite . Также работает на разных платформах.
источник
То, что вы делаете, правильно, но правильный синтаксис для «автоинкремента» не должен содержать пробелов:
(Также обратите внимание, что я изменил ваши varchars на строки. Это потому, что SQLite внутренне преобразует varchar в строку, так зачем беспокоиться?)
тогда ваша вставка должна быть на максимально стандартном языке SQL:
Хотя верно, что если вы опустите id, он будет автоматически увеличиваться и назначаться, я лично предпочитаю не полагаться на автоматические механизмы, которые могут измениться в будущем.
Замечание об автоинкременте: хотя, как многие отмечали, люди SQLite не рекомендуют его, мне не нравится автоматическое повторное использование идентификаторов удаленных записей, если автоинкремент не используется. Другими словами, мне нравится, что идентификатор удаленной записи больше никогда не появится.
HTH
источник