2016-08-20 102 views
0

所以,我在Ionic上有这个应用程序,它使用SQLite ngCordova plugin作为内部存储。在论坛中,我创建一个表使用下面的命令:SQLite中的ROWID是否自动设置?

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?

谢谢!

回答

2

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

你可以只添加列在SELECT子句中:

SELECT rowid, * FROM Scans_table ... 

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

相关问题