通常,当 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),所以也许这个微小的变化已经防止了别名。