Excellent!  You were on the mark; I am trying to fill the holes as
records are deleted.

Thanks Igor!

On Thu, 2009-10-08 at 19:45 -0400, Igor Tandetnik wrote:
> Bob Lauria <[email protected]> wrote:
> > I have a table keyed by an integer column.  Each time I insert a row
> > into the table I would like to use the lowest value that does not
> > currently exist in the table as a key.  Is there a query that will
> > provide me with the lowest numeric value (for a column) that does not
> > exist in the table?
> 
> I assume you want a positive value that matches these conditions. Try this:
> 
> select case when 1 not in (select id from mytable) then 1 else (
>     select min(id) + 1 from mytable where id + 1 not in (select id from 
> mytable)
> ) end;
> 
> This is for the case where you are also deleting recors, so the sequence of 
> ids may have holes that you want to fill in. If you 
> never delete, then it's simply
> 
> select coalesce(max(id) + 1, 1) from mytable;
> 
> or, better still, declare the column as INTEGER PRIMARY KEY and let SQLite 
> increment it automatically.
> 
> Igor Tandetnik 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to