SQLite Forum

Start rowid from 0
Login
Here is a patch:

~~~
Index: src/vdbe.c
==================================================================
--- src/vdbe.c
+++ src/vdbe.c
@@ -4938,11 +4938,11 @@
       rc = sqlite3BtreeLast(pC->uc.pCursor, &res);
       if( rc!=SQLITE_OK ){
         goto abort_due_to_error;
       }
       if( res ){
-        v = 1;   /* IMP: R-61914-48074 */
+        v = 0;
       }else{
         assert( sqlite3BtreeCursorIsValid(pC->uc.pCursor) );
         v = sqlite3BtreeIntegerKey(pC->uc.pCursor);
         if( v>=MAX_ROWID ){
           pC->useRandomRowid = 1;
~~~

The comment on the old line indicates that the use of 1 is documented
behavior:

   * ["If the table is initially empty, then a ROWID of 1 is used."](https://www.sqlite.org/autoinc.html)

And because it is documented, that means it won't change without a
very good reason.  But you can make the change in your own private
copies of SQLite, if you want.