我在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)", ... );
据此,如果我没有一个列是主键和整数,则应该将ROWID设置为唯一标识符。
问题是,当我使用简单的SELECT * ...
查询表时,我看到了我设置的所有行,而不是ROWID。
是否有其他方法来设置/检查ROWID?
2条答案
按热度按时间brvekthn1#
如文档中所示,表 * 确实 * 有一个内部
rowid
列。但是,如果表的列列表不包含此列的别名(即INTEGER PRIMARY KEY列),则rowid
列不包含在SELECT *
中。您可以只在SELECT子句中添加列:
但是,如果实际使用
rowid
,则最好使用显式INTEGER PRIMARY KEY列,这样不仅可以更好地记录表结构,还可以防止rowid
值变为changed by the VACUUM statement。dfuffjeb2#
在SqliteStudio 3.4.3中,将()放在行ID周围:“select(rowid),* from阿索”注意使用Sqlite3的Python代码不需要()。