sqlite:在rowid工作时无法选择id

时间:2016-03-08 11:20:35

标签: ios sql iphone sqlite

我有一个像这样的数据库模式

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

尝试{i}数据库中的SELECT

SELECT id FROM rephotos;

它什么都不打印。但是,如果我使用

SELECT rowid FROM rephotos;

它按预期工作。这让我感到困惑的原因是sqlite documentation具体说明了

  

如果表包含INTEGER PRIMARY KEY类型的列,那么   column成为ROWID的别名。然后,您可以访问ROWID   使用四个不同名称中的任何一个,描述原来的三个名字   以上或INTEGER PRIMARY KEY列的名称。所有这些   名称是彼此的别名,并且在任何名称中都同样有效   上下文。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

documentation说:

  

如果声明的类型名称恰好是" INTEGER",则PRIMARY KEY列只会变成整数主键。其他整数类型的名称,如" INT"或" BIGINT"或者" SHORT INTEGER"或者" UNSIGNED INTEGER"导致主键列表现为具有整数关联和唯一索引的普通表列,而不是rowid的别名。

AUTOINCREMENT拼写错误,因此列类型不完全" INTEGER"但是" INTEGER AUTO_INCREMENT"。