Thank you Eric and Jay. Your replies address my concerns. I mean, I'm no longer concerned :)
Thanks, Kavita On 10/14/10 1:20 PM, "Jay A. Kreibich" <j...@kreibi.ch> wrote: > 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 _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users