On Thu, Oct 14, 2010 at 12:33:11PM -0500, Kavita Raghunathan scratched on the 
wall:
> Hello,
> 
> My Primary Key is an integer. In the lifetime of a product, it may increase 
> to the maximum possible value of an integer. Our processor will make it 
> overflow into a very large negative number and so on.
> 
> My specific question is, if overflow occurs, how does sqlite deal with it?
> 
>  1.  What if its a large negative number ?
>  2.  What if there is already a PK with the rolled over value, say 1?

  http://www.sqlite.org/autoinc.html --

    If no ROWID is specified on the insert, or if the specified ROWID
    has a value of NULL, then an appropriate ROWID is created
    automatically. The usual algorithm is to give the newly created row
    a ROWID that is one larger than the largest ROWID in the table
    prior to the insert. If the table is initially empty, then a ROWID
    of 1 is used. If the largest ROWID is equal to the largest possible
    integer (9223372036854775807) then the database engine starts
    picking positive candidate ROWIDs at random until it finds one that
    is not previously used. If no unused ROWID can be found after a
    reasonable number of attempts, the insert operation fails with an
    SQLITE_FULL error. If no negative ROWID values are inserted
    explicitly, then automatically generated ROWID values will always
    be greater than zero. 

    [...]

    If a column has the type INTEGER PRIMARY KEY AUTOINCREMENT then a
    slightly different ROWID selection algorithm is used. The ROWID
    chosen for the new row is at least one larger than the largest
    ROWID that has ever before existed in that same table. If the table
    has never before contained any data, then a ROWID of 1 is used. If
    the table has previously held a row with the largest possible
    ROWID, then new INSERTs are not allowed and any attempt to insert a
    new row will fail with an SQLITE_FULL error. 

> This maybe a common problem you all may have ran into.

  No, not normally.  64-bits is a *really* big domain.

   -j

-- 
Jay A. Kreibich < J A Y  @  K R E I B I.C H >

"Intelligence is like underwear: it is important that you have it,
 but showing it to the wrong people has the tendency to make them
 feel uncomfortable." -- Angela Johnson
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to