Faq/Base/127

    From The Document Foundation Wiki
    < Faq‎ | Base
    This page is a translated version of the page Faq/Base/127 and the translation is 100% complete.
    Other languages:

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

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

    De primaire key wordt automatisch gegenereerd en de tabel bevat gegevens

    Uitgangspositie: niet oplopende continue nummering
    • 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.
    1. Geeft de tabel een nieuwe naam
    2. Kies de optie Structuure en gegevens, klik op Volgende
    3. Selecteer alle velden behalde de primaire key
    4. Kik op Aanmaken. LibreOffice zal vragen om een primaire sleutel aan te maken. Doe dat niet.
    5. De nieuwe tabel is aangemaakt. Voeg een veld als primaire key toe, autogenereer de waarde, opslaan.
    • Dit verhaal in plaatjes:
    Opnieuw aanmaken primaire key
    Assistent Tabel kopiëren 1
    Assistent Tabel kopiëren 2
    Assistent Tabel kopiëren 3

    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 Extra ▸ SQL
    Gebruik van een teller
    Uitgangspunt: niet opeenvolgende nummering
    Uitvoeren via Extra ▸ SQL
    Resultaat
    • SQL-opdracht:
    CREATE SEQUENCE NUMENREG AS INTEGER
    UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG"
    DROP SEQUENCE "NUMENREG"