The [documentation](https://www.sqlite.org/lang_createtable.html#rowid) actually says that > if a rowid table has a primary key that consists of a single column and the declared type of that column is "INTEGER" in any mixture of upper and lower case, then the column becomes an alias for the rowid. There is no restriction that the primary key constraint must be a column constraint.