我有一个像这样的数据库模式
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列的名称。所有这些 名称是彼此的别名,并且在任何名称中都同样有效 上下文。
我做错了什么?
答案 0 :(得分:1)
如果声明的类型名称恰好是" INTEGER",则PRIMARY KEY列只会变成整数主键。其他整数类型的名称,如" INT"或" BIGINT"或者" SHORT INTEGER"或者" UNSIGNED INTEGER"导致主键列表现为具有整数关联和唯一索引的普通表列,而不是rowid的别名。
AUTOINCREMENT拼写错误,因此列类型不完全" INTEGER"但是" INTEGER AUTO_INCREMENT"。