理论上简单的sql语句:
CREATE UNIQUE INDEX i1 ON MyTable (col1, col2) WHERE col3 IS NULL;
然而,当我尝试执行该语句时,我得到:
android.database.sqlite.SQLiteException: near "WHERE": syntax error: , while compiling: CREATE UNIQUE INDEX
为什么????有什么解决方法吗?
最佳答案
我没有在 android 中使用索引,但它出现在 sqlite changelog 中部分索引在 SQLite 3.8.0 中可用。
我认为大多数 android 设备(某些是 4.3 和更早版本)都使用早期版本的 SQLite。在终端模拟器或 adb shell 中,使用 sqlite3 --version
查看您的设备运行的 SQLite 版本。如果它是 3.8.0 之前的版本,则它不支持部分索引,您将不得不取消 WHERE 子句。
实际上,无论如何您都应该取消 WHERE 子句,因为在您发布应用程序时,许多用户没有合适的 sqlite 版本来使用您的应用程序。反正没必要。
关于android sqlite 使用 where 子句创建索引失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303076/