das, was Du beschreibst, ist ein Missverständnis des Autowertes, dem sehr viele Anwender erliegen. Der Autowert ist nicht dazu gedacht, die Datensätze lückenlos durch zu nummerieren, sondern einfach nur jedem Datensatz ein einzigartiges Merkmal in Form einer Zahl zu verpassen. Unterschiedliche Datenbanken haben hier auch erst einmal unterschiedliche Startwerte implementiert. In der Standardeinstellung startet die internen HSQLDB den Autowert mit '0', MySQL z.B. startet mit '1'.
Was machst Du mit der Nummerierung, wenn ein Datensatz gelöscht wird? Dann fehlt zwischendurch eine Nummer und die Gesamtanzahl stimmt natürlich nicht mehr mit der Zahl des Autowertes überein. Vor allem beim Erstellen von Datenbanken geschieht es sehr häufig, dass Datensätze wieder gelöscht werden. Dann fehlen plötzlich sehr viele Werte zwischendurch. Und wieder hechelst Du dem hinterher, die Nummerierung mit der Anzahl in Übereinstimmung zu bekommen.
Was ist möglich?
Code: Alles auswählen
ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" RESTART WITH <neuer_Feldwert>
Das ganze geht auch über ein Makro gegebenenfalls für alle Tabellen automatisch. Siehe dazu im Handbuch im Kapitel "Makros" das Unterkapitel "Tabellenindex heruntersetzen ...".
Das alles beseitigt aber nicht das Problem, das Du hast, wenn Du zwischendurch Datensätze löscht.
Code: Alles auswählen
SELECT "ID", ( SELECT COUNT( "ID" ) FROM "Tabelle" WHERE "ID" <= "a"."ID" ) AS "lfdNr." FROM "Tabelle" AS "a"
Gruß
Robert