Ofte stillede spørgsmål - Base

From The Document Foundation Wiki
< Faq‎ | Base‎ | 127
Jump to: navigation, search

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 Funktioner ▸ SQL
ALTER TABLE 'tablename' ALTER COLUMN 'primary key name' RESTART WITH 1 

Primærnøglen er autogenereret og tabellen indeholder data

Udgangspunkt: ikke-fortløbende nummerering
  • Opret følgende nummerering: Tabellen indeholder for eksempel 20 rækker, i det du fjerner den sidste række, genstarter du nummereringen fra 15.

Brug SQL-kommandoen ovenfor, mens du ændrer startværdien til 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å Opret. 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:
Genoprettelse af primærnøgle
Guiden Tabelkopiering 1
Guiden Tabelkopiering 2
Guiden Tabelkopiering 3

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 Funktioner ▸ SQL

Brug af en tæller
Udgangspunkt: Ikke-fortløbende, ikke-automatisk nummerering
Udfør gennem Utils ▸ SQL
Resultat
  • SQL-kommando:
CREATE SEQUENCE NUMENREG AS INTEGER 
UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG" 
DROP SEQUENCE "NUMENREG"