Я пытаюсь создать таблицу с автоматически увеличивающимся первичным ключом
в 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.
То, что Вы делаете, исправить, но правильный синтаксис для 'автоматического инкремента' должен быть без пространства:
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