通常,当 Sqlite 遇到integer primary key
语句时,例如
CREATE TABLE [T] (id INTEGER PRIMARY KEY, [...]);
那么该id
列将是rowid列的别名,也就是 Sqlite 的内部 ID 列。
但是,当附加not null
到
CREATE TABLE [T] (Id INTEGER PRIMARY KEY NOT NULL, [...]);
别名仍然激活吗?
NOT NULL
应该不会影响表的语义属性,但是别名规则非常严格(例如,它不会接受int
而不是integer
),所以也许这个微小的变化已经防止了别名。