Hallo, wie kann ich den Primärschlüssel in der Tabelle neu ordnen, weil einige Zeilen, weil nicht mehr gebraucht, fehlen, z,B, 10 15 21 22 23 26 34 35 usw
Ich weiss, das das nicht notwendig ist, es dient der Übersicht.
Der SQL Befehl
ALTER TABLE “Tabellenname” ALTER COLUMN “ID” RESTART WITH
z.B. Restart with 10
funktioniert nicht: Hinweis: Bearbeitung erfolgreich aber 0 rows updated
Wäre nett, wenn mir jemand helfen könnte Danke
Mit dem von Dir genannten Kommando stellst Du den Zähler so ein, dass bei der internen HSQLDB der nächste Wert für “ID”, der vergeben wird, eine 10 ist. Das ist kein Update für eine Tabelle sondern eine Anweisung für den Zähler des Primärschlüssels in dieser Tabelle.
Einen Primärschlüssel neu ordnen kannst Du nur dann, wenn der Schlüssel nicht anderweitig verwendet wird (Verbindung zu anderen Tabellen über den Schlüssel) oder Du bei der Verbindung angegeben hast, dass bei einem Update auch der Fremdschlüssel ein Update erfahren soll.
Du wirst schon händisch die Schlüsselwerte bearbeiten müssen, wenn Du das Ganze unbedingt ohne Lücken haben willst. Was ich auf keinen Fall machen würde wäre die Eingabe neuer Datensätze und dann anschließend diesen neuen Datensatz umschreiben zu “ID” = 10 (weil das der erste freie Platz ist). Damit wäre die ganze Reihenfolge der vorherigen Eingaben zerstört.
Davon ab: Es reicht, eine laufende Nummer an zu zeigen und das Feld “ID” aus zu blenden, wenn Dich das stört.
Die tatsächlichen Zahlenwerte eines solchen Primärschlüssels sind vollkommen egal. Der Schlüssel ist nur für die internen Funktionen der Datenbank wesentlich. Der Zahlenwert 99 bedeutet nichts anderes als “der Datensatz mit der Nummer 99”, und die Datenbank-Engine achtet darauf, dass diese Zahl für diese Tabelle nicht mehr vergeben wird, und dass alle Fremdschlüssel mit derselben Zahl 99 sich immer auf diesen einen Datensatz mit dem Primärschlüssel 99 beziehen. Beim Löschen von Datensätzen werden die gelöschten Nummern auch nicht neu vergeben.
Falls man diesen automatischen Schlüssel tatsächlich als sichtbaren Wert mit einer Bedeutung nutzen will, z.B. als Rechnungsnummer, dann setzt man meistens RESTART WITH 10000 für 5-stellige Rechnungsnummern.
Für vorhandene Rechnungsnummern würde man so etwas machen:
UPDATE "TABELLE" SET "ID"="ID"+10000
Danach schaut man, wo das Maximum ist und setzt RESTART WITH entsprechend.
Danke für die Hilfe und die Informationen
Ich werde die Primärschlüssel ausblenden und habe mir, um die Menge der Datensätze zu erhalten ,folgende Abfrage gemacht:
SELECT COUNT( “ID” ) AS “Anzahl der Datensätze” FROM “Tabelle1”