I have done something similar. I get max(id) before I upsert and as I do all my upserts I do ++id. I need the rowid too because I capture all upserts with the update hook to delete all not upserted entries. carray is very handy for that. So I still think I would be nice to have somthing like CREATE TABLE foo(id AS (rowid), gobalID TEXT PRIMARY KEY, data...). Thank you much for your help!