Mit der folgenden Abfrage werden in einer
ID-Spalte einer DB-Tabelle vorhandene
Lücken festgestellt:
SQL-Code:
SELECT (Id+1) AS FreieId FROM Tabelle
WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle)
ORDER BY FreieId
Wenn nur die
kleinste freie ID gesucht wird, kann dieser Befehl ergänzt werden:
SQL-Code:
//
MySQL
... LIMIT 1
// Firebird ab 1.5
SELECT FIRST 1 ...
//
MSSQL
SELECT TOP 1 ...
Achtung: Stimmt die Variante für MSSQL wirklich? Ich arbeite nicht damit, habe es aber irgendwo aus den Tiefen meines Gedächtnisses so geholt.
Dieser Tipp ist entstanden aus der Diskussion
[mysql] Autoinc fehlende Einträge von
gsh. Meinen Vorschlag hat
gsh geprüft und ergänzt.
Jürgen