2016-03-08 6 views
1

У меня есть базы данных схемы, как этаSQLite: Невозможно выбрать идентификатор, а ROWID работы

CREATE TABLE IF NOT EXISTS 
    rephotos (id integer AUTO_INCREMENT, 
       beforePath text, 
       beforeThumbnail blob, 
       afterPath text, 
       afterThumbnail blob, 
       PRIMARY KEY(id) 
      ); 

При попытке SELECT идентификаторы в базе данных, как этот

SELECT id FROM rephotos; 

не печатает ничего. Однако если я использую

работает, как ожидалось. Причина этого меня смущает то, что sqlite documentation конкретно говорится, что

Если таблица содержит столбец типа INTEGER PRIMARY KEY, то, что столбец становится псевдонимом для ROWID. Затем вы можете получить доступ к ROWID , используя любое из четырех разных имен, имена трех оригиналов, описанные выше , или имя, присвоенное колонке INTEGER PRIMARY KEY. Все эти имена являются псевдонимами друг для друга и одинаково хорошо работают в любом контексте .

Что я делаю неправильно?

ответ

1

documentation говорит:

ПЕРВИЧНЫЙ столбец KEY только становится в качестве первичного ключа, если имя объявленного типа именно "INTEGER". Другие имена целых типов, такие как «INT» или «BIGINT» или «SHORT INTEGER» или «UNSIGNED INTEGER», приводят к тому, что столбец первичного ключа ведет себя как обычный столбец таблицы с целочисленным сродством и уникальный индекс, а не как псевдоним для rowid.

AUTOINCREMENT указан неправильно, поэтому тип столбца не является точно «INTEGER», а «INTEGER AUTO_INCREMENT».

+0

Я обозначил id как «ПЕРВИЧНЫЙ КЛЮЧ (id)', этого недостаточно? – oarfish

Смежные вопросы