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

Jak přidat identitu do sloupce na SQL Server?

Nemůžete přidat IDENTITY do existujícího sloupce. To prostě nelze udělat.

Budete muset vytvořit nový sloupec typu INT IDENTITY a poté vypusťte starý sloupec, který již nepotřebujete (a případně přejmenujte nový sloupec na starý název – pokud je to potřeba)

Také:Nechci proveďte to ve vizuálním návrháři – pokusí se znovu vytvořit tabulku s novou strukturou, zkopírujte všechna data (všech 10 milionů řádků) a poté starou tabulku zrušte.

Je mnohem efektivnější používat přímé příkazy T-SQL – to provede aktualizaci „na místě“, nedestruktivní (neztratí se žádná data), a to ne potřeba zkopírovat přibližně 10 milionů řádků v procesu...

ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

Když přidáte nový sloupec typu INT IDENTITY do vaší tabulky, pak se automaticky vyplní po sobě jdoucími čísly. Nemůžete tomu zabránit a také nemůžete později aktualizovat hodnoty.

Ani jedna z těchto možností nakonec není příliš užitečná – můžete skončit s různými hodnotami ID... abyste to udělali správně, museli byste:

  • vytvořte novou tabulku předem se správnou strukturou a IDENTITY již na místě
  • pak zapněte SET IDENTITY_INSERT (yourtable) ON na této tabulce, aby bylo možné vkládat hodnoty do sloupce identity
  • zkopírujte tato data z původního zdroje
  • znovu vypněte vkládání identity:SET IDENTITY_INSERT (yourtable) OFF

Pouze s tímto přístupem budete moci získat stejná ID ve sloupci IDENTITY ve vaší nové tabulce.



  1. SQLAlchemy:Jak odstranit pomocí spojení

  2. multiset union different poskytuje chybný počet předávaných typů nebo argumentů

  3. Získání chyby AbstractMethodError při vytváření připojení k databázi Oracle9 se serverem Tomcat 8

  4. Omezení sloupce Mysql není prázdné / povinné