Nejčastější dotazy/Base/127
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
Jak mohu znovu spustit průběžné číslování pro primární klíč?
- Kontext: V průběhu přidávání a mazání řádků v tabulce se číselné hodnoty primárního klíče stanou nesouvislými. Ačkoli to má na samotnou databázovou operaci malý nebo žádný vliv, můžete si přát obnovit průběžné číslování.
- Tento často kladený dotaz nebere v úvahu případ, kdy byl pomocí tohoto klíče definován jeden nebo více vztahů pro propojení této tabulky s jinými tabulkami, pokud tato data budou existovat i v těchto tabulkách. V takovém případě samozřejmě budete muset změnit data i v ostatních tabulkách, jinak budou vztahy mezi tabulkami porušeny.
- Kromě tohoto neuvažovaného případu dochází k různým situacím:
Primární klíč je vygenerován automaticky a tabulka neobsahuje data
- Proveďte následující příkaz SQL prostřednictvím nabídky "Nástroje -> SQL".
ALTER TABLE 'název_tabulky' ALTER COLUMN 'název primárního klíče' RESTART WITH 1
Primární klíč je vygenerován automaticky a tabulka obsahuje data
- Vytvořte následující číslování: tabulka obsahuje 20 řádků, například odstraníte poslední řádek, znovu číslování spustíte na 15.
- Použijte výše uvedený příkaz SQL a upravte počáteční hodnotu na 15.
- Úplné přečíslování (změna stávajících klíčů): použijte průvodce "kopírovat tabulku".
- Zkopírujte a vložte tabulku nebo ji mírně posuňte myší: zobrazí se průvodce.
- Zadejte nový název tabulky
- Vyberte možnost Struktura a data, klikněte na Další
- Vyberte všechna pole kromě primárního klíče
- Klikněte na Vytvořit. LibreOffice navrhne vytvoření primárního klíče: zvolte Ne
- Je vytvořena nová tabulka. Upravte jej přidáním pole primárního klíče, automaticky vygenerujte hodnotu a uložte.
- Výše uvedený proces v obrázcích:
Primární klíč není definován jako automaticky generovaný a data neobsahují žádná data
- Není nutná žádná úprava: pole je upravitelné a může mít libovolnou požadovanou hodnotu.
Primární klíč není definován jako automaticky generovaný a tabulka obsahuje data
- Protože primární klíč není generován automaticky, systém negeneruje hodnoty, ať už sekvenční nebo jiné. Můžeme však vytvořit počítadlo v příkazu SQL prováděném prostřednictvím nabídky Nástroje > SQL
- SQL příkaz:
CREATE SEQUENCE NUMENREG AS INTEGER UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG" DROP SEQUENCE "NUMENREG"