Задать вопрос

AUTOINCREMENT в SQLite3

Пытаюсь в SQLITE3 cоздать простую табличку:
CREATE TABLE IF NOT EXISTS `tbl` (
  `id` int(3) NOT NULL AUTOINCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
);
И ничего не создаётся, ругается на AUTOINCREMENT. Изначально писал AUTO_INCREMENT, как в MySQL, потом нашёл документацию, где указано, что пишется без подчёркивания. Толку больше не стало, near «AUTOINCREMENT»: syntax error. Подскажите, что я делаю не так?
  • Вопрос задан
  • 48900 просмотров
Подписаться 8 Оценить Комментировать
Решения вопроса 1
difiso
@difiso
В параллельной вселенной я космонавт
Вот такой запрос работает.
CREATE TABLE IF NOT EXISTS `tbl` (
  `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
  `name` varchar(255) NOT NULL);


Небольшой рецепт на будущее для решения подобных проблем: создаете визардом таблицу нужного вида и смотрите на скрипт создания.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Mithgol
@Mithgol
Вообще для изучания того синтаксиса SQL, который в SQLite применяется, надо http://sqlite.org/lang.html читать.

В частности, по адресу http://sqlite.org/lang_createtable.html можно видеть диаграмму «column-constraint», согласно которой AUTOINCREMENT является модификатором при PRIMARY KEY.
Ответ написан
Комментировать
@deko
Согласно FAQ SQLite INTEGER PRIMARY KEY можно не объявлять как AUTOINCREMENT.

Цитата:
How do I create an AUTOINCREMENT field.
Short answer: A column declared INTEGER PRIMARY KEY will autoincrement.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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