Können Sie angeben, warum diese benötigen? Es klingt, als könnte es einen besseren Weg geben, um das allgemeine Bedürfnis zu befriedigen.
Wenn jedoch alles, was Sie die nächste Nummer in der Sequenz müssen, dann sollte diese Arbeit:
SELECT MAX(ID) + 1 FROM Table
Edit: ich von Thomas' Antwort nur bemerkt (und wieder Inspektion der Frage), dass Es sieht so aus, als ob du nach der ersten Lücke suchst, die die nächste Nummer sein kann oder auch nicht. Aber ich denke, der Gesamtpunkt bleibt immer noch ... warum?
Edit: Ich bin froh, dass Sie eine Antwort akzeptiert, aber ich denke immer noch, dass es mehr dazu gibt. Wenn Sie beispielsweise nur eine ID "reservieren" möchten, gibt es mehrere Möglichkeiten, dies zu erreichen.
GUIDs sind gut für anwendungsgenerierte IDs, sollten jedoch aus Leistungsgründen nicht als Primärschlüssel verwendet werden. Sie können eine zweite Spalte als GUID verwenden und diese in Ihrer Anwendung verwenden, sodass eine einfache Spalte mit automatischer Erhöhung der Primärschlüssel ist. Es gibt noch weitere Leistungsüberlegungen, die Sie untersuchen sollten.
Umgekehrt gibt es etwas namens Hi/Lo Algorithm zum Reservieren von Bereichen von Datenbank-IDs. Es verwendet Integer, die sich hervorragend zur Indexierung eignen und großartige Primärschlüssel darstellen. Es hinterlässt Lücken in der Sequenz, aber das ist auch bei einer regulären automatisch generierten Spalte zu erwarten (z. B. wenn ein Datensatz gelöscht wird).
Wenn es eine Anforderung gibt, dass es keine Lücken in den Identifikatoren geben sollte, klingt das wie eine seltsame Geschäftsanforderung und sollte für seine wahren Bedürfnisse analysiert werden. So etwas sollte in Ihrer Datenpersistenz nicht in den Primärschlüssel übergreifen.
Sie wollen (höchste + 1) oder erste Lücke? – gbn
Und Sie wollen nicht verwenden und Identity-Spalte, weil ... –