Sorry I was not specific enough. Regarding rowids there are 4 "safe" Possibilities: a) you neither need nor want rowids: declare a WITHOUT ROWID table b) you don't care: do not declare an alias an do not use the built-in names c) you don't care about the specific value: declare an alias, but use it only for foreign keys with appropriate constraints d) you care about a specific value: declare an alias and always supply a value on INSERT and be prepared to handle conflicts The example I gave illustrates that you can set it even without explicit declaration. I did not mean to imply that it would be prudent to do so.