SQLite中的ROWID是自动设置的吗?

时间:2016-08-20 04:59:57

标签: android cordova ionic-framework sqlite

所以,我在Ionic上有这个应用程序,它使用SQLite ngCordova plugin进行内部存储。在它上面,我使用以下命令创建一个表:

db.executeSql(
    "CREATE TABLE IF NOT EXISTS Scans_table (" +
      //"id         TEXT PRIMARY KEY  NOT NULL," +
      "name       TEXT              NOT NULL," +
      "comment    TEXT, " +
      "text       TEXT              NOT NULL, " +
      "format     TEXT              NOT NULL, " +
      "dateTaken  TEXT              NOT NULL, " +
      "imgSource  TEXT              NOT NULL)", ... );

根据this,如果我没有主列和整数列,则应将ROWID设置为唯一标识符。

问题是,当我用简单的SELECT * ...查询表时,我看到了我设置的所有行,而不是ROWID。

有没有不同的方法来设置/检查ROWID?

谢谢!

1 个答案:

答案 0 :(得分:3)

documentation所示,您的表 有一个内部rowid列。但是,如果表的列列表不包含此列的别名(即INTEGER PRIMARY KEY列),rowid列中不包含SELECT *列。

您只需在SELECT子句中添加该列:

SELECT rowid, * FROM Scans_table ...

但是,如果您实际使用rowid,最好有一个显式的INTEGER PRIMARY KEY列。这不仅可以更好地记录表格结构,还可以防止rowid值为changed by the VACUUM statement