我有一个SQLite应用程序在Linux,Windows和Android上运行时使用自定义编译的SQLite(使用NDK)。使用和不使用ROWID创建表可以正常工作。
相反,当我尝试使用Android中的标准SQLite创建相同的模式时,语法错误将被抛出" WITHOUT"在下一个SQL语句中:
CREATE TABLE REL_TABLE1_TABLE2
( FK_TABLE1_ID integer, FK_TABLE2_ID integer,
FOREIGN KEY (FK_TABLE1_ID) REFERENCES TABLE1(ROWID),
FOREIGN KEY (FK_TABLE2_ID) REFERENCES TABLE2(ROWID),
PRIMARY KEY (FK_TABLE1_ID, FK_TABLE2_ID)
)
WITHOUT ROWID;
如果我删除" WITHOUT ROWID"它工作正常。这是否意味着Android不支持WITHOUT ROWID。
我发现没有相关文档,但其他人看起来有相关问题:
Cannot open sqlite database with linqpad, when WITHOUT ROWID is used
编辑:TABLE1 / 2仍保留ROWID。 WITHOUT ROWID仅适用于N / M REL_TABLE1_TABLE2表
答案 0 :(得分:6)
WITHOUT ROWID是在SQLite 3.8.2中引入的。
这意味着Android可能支持也可能不支持,具体取决于which Android version you're using。