Möglicher Lösungsansatz: im Statement eine Menge A mit allen ID und eine Menge B mit allen ID+1 generieren und so verbinden, dass als Ergebnismenge nur alle B zurückgeben werden, die nicht in A enthalten sind - der kleinste Wert ist die gesuchte 'freie' ID.
Das Problem dabei ist, das dies damals (vor ca. vier Jahren) nur mit Oracle in _einem_
SQL-Statement möglich war, und somit performant auf dem Server optimiert werden konnte.
Ansonsten lies die Hinweise von woki, sonst wirst Du früher oder später Probleme bekommen...
Gruß Nico
ps: ist zu lange her, als dass ich das o.g. Statement noch zusammenbekommen würde (hat meinen Kollegen ein paar Tage gekostet darauf zu kommen
)