Faq/Base/127
TDF LibreOffice Document Liberation Project Blogs gemeenschap Weblate Nextcloud Redmine Ask LibreOffice Doneren
Hoe kan ik opnieuw starten met het oplopend nummeren van een primaire sleutel?
Context: door het verwijderen en toevoegen van rijen in een tabel worden de nummers van de primaire sleutel van een tabel niet opeenvolgend. Dit heeft geen gevolgen voor de database zelf. Maar misschien wil je het toch aanpassen.
Deze FAQ beschouwd niet de instantie dat er een of meer relaties gedefinieerd zijn die deze key gebruiken om naar andere tabellen te linken, als deze gegevens ook in die tabellen bestaat. In dat geval zou je de gegevens ook in die andere tabellen moeten aanpassen, anders gaat de verwijzing verloren.
De primaire key wordt automatisch gegenereerd en de tabel bevat geen gegevens
Voer de volgende SQL-opdracht uit via het
▸ALTER TABLE 'tablename' ALTER COLUMN 'primary key name' RESTART WITH 1
De primaire key wordt automatisch gegenereerd en de tabel bevat gegevens
- Maak de volgende nummering: de tabel bevat 20 records, bijvoorbeeld: verwijder de laatste en start de nummering met 15.
Gebruik de bovenstaande SQL-opdracht, pas de startwaarde aan naar 15. - Volledig opnieuw nummeren (wijzigen bestaande keys): gebruik de assistent "copy table". Kopieer en plak de tabel of verplaats het licht met de muis: de assistent wordt getoond.
- Geeft de tabel een nieuwe naam
- Kies de optie Structuure en gegevens, klik op Volgende
- Selecteer alle velden behalde de primaire key
- Kik op Aanmaken. LibreOffice zal vragen om een primaire sleutel aan te maken. Doe dat niet.
- De nieuwe tabel is aangemaakt. Voeg een veld als primaire key toe, autogenereer de waarde, opslaan.
- Dit verhaal in plaatjes:
De primaire key wordt niet automatisch gegenereerd en de tabel bevat geen gegevens
- Geen aanpassing nodig, het veld is te wijzigen en kan elke gewenste waarde krijgen.
De primaire key wordt automatisch gegenereerd en de tabel bevat gegevens
- Omdat de primaire key niet automatisch wordt gegenereerd, maakt het systeem geen waarden aan. We kunnen echter wel een teller hiervoor aanmaken met een SQL-opdracht via ▸
- SQL-opdracht:
CREATE SEQUENCE NUMENREG AS INTEGER UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG" DROP SEQUENCE "NUMENREG"