Faq/Base/127/da

Hvordan kan jeg genstarte fortløbende nummerering af primærnøglen?
Kontekst: I et forløb med tilføjelser og sletninger af rækker i en tabel vil primærnøglernes værdier blive ikke-fortløbende. Selv om dette har lille eller ingen indvirkning på selv database-operatioenen, vil du måske genoprette fortløbende nummerering.


 * Denne FAQ behandler ikke det tilfælde, hvor en eller flere relationer er blevet defineret med denne nøgle til at kæde denne tabel sammen med andre tabeller, når disse data også findes i disse tabeller. Selvfølgelig vil du i dette tilfælde være nødt til at ændre data også i de andre tabeller eller relationerne mellem tabellerne vil blive brudt.


 * Udover dette ubehandlede tilfælde er der disse situationer:

Primærnøglen er autogenereret og tabellen indeholder ikke data

 * Kør følgende SQL-kommando via menuen 

ALTER TABLE 'tablename' ALTER COLUMN 'primary key name' RESTART WITH 1

Primærnøglen er autogenereret og tabellen indeholder data
Brug SQL-kommandoen ovenfor, mens du ændrer startværdien til 15.
 * Opret følgende nummerering: Tabellen indeholder for eksempel 20 rækker, i det du fjerner den sidste række, genstarter du nummereringen fra 15.
 * Omnummerer fuldstændig (med ændring af de eksisterende primærnøgler): brug guiden Kopier tabel. Kopier-og-indsæt tabellen eller flyt den en smule med musen: guiden åbnes.
 * 1) Giv tabellen et nyt navn
 * 2) Vælg indstillingen Struktur og data og klik på Næste
 * 3) Marker alle felter undtagen primærnøglen
 * 4) Klik på . LibreOffice foreslår oprettelse af en primærnøgle: vælg Nej
 * 5) Der oprettes en ny tabel. Modificer den ved at tilføje primærnøgle-felt, autogenerer værdien og gem.


 * Ovenstående proces i billeder:

Primærnøglen er ikke defineret som autogenereret og tabellen indeholder ikke data

 * Ændring er ikke nødvendig: feltet kan redigeres og kan have enhver ønsket værdi.

Primærnøglen er ikke defineret som autogenereret og tabellen indeholder data
Eftersom primærnøglen ikke er genereret automatisk, genererer systemet ikke værdier fortløbende eller på nogen anden måde. Vi kan imidlertid oprette en tæller til den i en SQL-kommando, udført gennem menuen 
 * SQL-kommando:

CREATE SEQUENCE NUMENREG AS INTEGER UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG" DROP SEQUENCE "NUMENREG"