> The trick here is that a non-rowid table (that is to say a WITHOUT ROWID table) is really implemented as a stand-alone index This is interesting. Especially the misleading error message generated if an index with the same name already exists. Example: ``` drop table if exists t1; create table t1 (a); create index i1 on t1(a); drop table if exists i1; create table i1 (a primary key) without rowid; ``` Even though there is no table `i1` this fails with the following error message: ``` there is already a table named i1 ^^^^^ ``` I would have looked forever for this table did I not know that `i1` in fact conflicts with an index.