【问题标题】:Is ROWID in SQLite automatically set?SQLite中的ROWID是自动设置的吗?
【发布时间】:2016-08-20 04:59:57
【问题描述】:

所以,我在 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?

【问题讨论】:

    标签: android cordova ionic-framework sqlite


    【解决方案1】:

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

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

    SELECT rowid, * FROM Scans_table ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-20
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2014-11-24
      相关资源
      最近更新 更多