Faq/Base/127/cs

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.  <dl><dd>Použijte výše uvedený příkaz SQL a upravte počáteční hodnotu na 15. </dd></dl> Úplné přečíslování (změna stávajících klíčů): použijte průvodce "kopírovat tabulku". </li></ul> <dl><dd>Zkopírujte a vložte tabulku nebo ji mírně posuňte myší: zobrazí se průvodce. </dd></dl> <ol>Zadejte nový název tabulky </li>Vyberte možnost Struktura a data, klikněte na Další </li>Vyberte všechna pole kromě primárního klíče </li>Klikněte na Vytvořit. LibreOffice navrhne vytvoření primárního klíče: zvolte Ne </li>Je vytvořena nová tabulka. Upravte jej přidáním pole primárního klíče, automaticky vygenerujte hodnotu a uložte. </li></ol>

Výše uvedený proces v obrázcích: </li></ul>

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. </li></ul>

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 </li></ul> SQL příkaz: </li></ul>

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