sql >> Databáze >  >> RDS >> Sqlserver

Resetovat primární klíč (int jako identitu)

Maximální hodnota pro bigint je 9,223,372,036,854,775,807 . Pokud byste se dostali na 8 číslic za den, stále byste potřebovali 10 dní, abyste dosáhli maxima. To je asi 25 milionů let.

Za předpokladu, že stále chcete obnovit sloupec, první otázka, kterou mám, je:je pořadí řádků důležité? Znamená to, že spoléháte na skutečnost, že řada 1000 je před 1100, řekněme v chronologickém nebo jinak absolutním řazení? Pokud ne, je to snadné:sloupec smažte a znovu přidejte. Ahoj, nové hodnoty.

Pokud potřebujete zachovat pořadí, budete to muset udělat trochu opatrněji:

  1. Zamkněte stůl;
  2. Změňte typ tak, aby se již nezvyšoval automaticky;
  3. Vytvořte nový sloupec. Nejlépe bude, když jej prozatím ponecháte bez indexů, protože aktualizace indexu zpomalí vkládání;
  4. Hodnoty ve druhém naplňte smyčkou nějakého druhu zvyšující počítadlo (jako je trik SQL Server rownum) a pořadí vložení tak, aby odpovídalo původnímu pořadí;
  5. Nahradit starý sloupec novým;
  6. Obnovte automatické zvyšování a stav primárního klíče.


  1. CHYBA COPY CSV Postgresql:další data za posledním očekávaným sloupcem

  2. Jak ručně vložit hodnotu do sloupce identity v tabulce SQL Server - SQL Server / Výukový program T-SQL, část 41

  3. Chyba syntaxe PDO Mysql 1064

  4. Jak získám nezpracovaný, zkompilovaný SQL dotaz z výrazu SQLAlchemy?