Hmm. normalerweise würde ich einen Zähler in einer getrennten Tabelle reservieren, und den einfach hochzählen. Dann gibt es zwar Lücken, aber das ist doch vollkommen egal.
Aber Du willst das eben nicht...
Delphi-Quellcode:
select min (k.KuNr+1) As NeuKdNr
from Kunden k
left join Kunden k1
on k.KuNr + 1 = k1.KuNr
Where k1.KuNr is Null
Erzeugt eine Liste aller Kundennummern, für die es keinen Kunden mit der Nummer 'KuNr+1' gibt und liefert das kleinste Element zurück.
Bei 7000 Datensätzen ist das gerade noch vertretbar, zumal das Anlegen neuer Kunden nicht ständig vorkommt.
[edit]
Das hier ist laut
Query Analyzer noch etwas schneller
Delphi-Quellcode:
select min (orNumber+1) from [order] o
where not exists (
select * from [order] o1 where o1.orNumber = o.ornumber+1
)
[/edit]