SQLite"没有ROWID" Android SQLite支持?

时间:2015-07-03 09:47:19

标签: android sqlite

我有一个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表

1 个答案:

答案 0 :(得分:6)

WITHOUT ROWID是在SQLite 3.8.2中引入的。

这意味着Android可能支持也可能不支持,具体取决于which Android version you're using