2016-08-20 21 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