SQLite 中的 ROWID 是否自动设置?

Sam*_* I. 8 sqlite android cordova ionic-framework

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

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)", ... );
Run Code Online (Sandbox Code Playgroud)

根据这个,如果我没有一列,它是一个主键和一个整数,一个ROWID应设置为一个唯一的标识符。

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

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

CL.*_*CL. 16

文档中所示,您的表确实有一个内部rowid列。但是,如果您的表的列列表不包含此列的别名(即 INTEGER PRIMARY KEY 列),则该rowid列不包含在SELECT *.

您可以在 SELECT 子句中添加列:

SELECT rowid, * FROM Scans_table ...
Run Code Online (Sandbox Code Playgroud)

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