Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać tożsamość do kolumny w SQL Server?

nie możesz dodaj IDENTITY do istniejącej kolumny. Po prostu nie da się tego zrobić.

Musisz utworzyć nową kolumna typu INT IDENTITY a następnie usuń starą kolumnę, której już nie potrzebujesz (i ewentualnie zmień nazwę nowej kolumny na starą - jeśli to konieczne)

Poza tym:nie zrób to w projektancie wizualnym — spróbuje odtworzyć tabelę z nową strukturą, skopiuj wszystkie dane (wszystkie 10 milionów wierszy), a następnie usuń starą tabelę.

O wiele bardziej wydajne jest używanie prostych instrukcji T-SQL — spowoduje to aktualizację „w miejscu”, nieniszczącą (żadne dane nie zostaną utracone) i nie trzeba skopiować w tym procesie około 10 milionów wierszy...

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

Po dodaniu nowej kolumny typu INT IDENTITY do Twojej tabeli, zostanie ona automatycznie wypełniona kolejnymi numerami. Nie możesz temu zapobiec, a także nie możesz później zaktualizować wartości.

Żadna z tych opcji nie jest zbyt użyteczna, w końcu - możesz otrzymać różne wartości ID.... aby zrobić to dobrze, musisz:

  • utwórz nową tabelę z wyprzedzeniem, z odpowiednią strukturą i IDENTITY już na miejscu
  • następnie włącz SET IDENTITY_INSERT (yourtable) ON na tej tabeli, aby umożliwić wstawianie wartości do kolumny tożsamości
  • skopiuj te dane z oryginalnego źródła
  • Wyłącz ponownie wstawianie tożsamości:SET IDENTITY_INSERT (yourtable) OFF

Tylko przy takim podejściu będziesz w stanie uzyskać ten sam identyfikator w kolumnie IDENTITY w nowej tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywne i najlepsze sposoby formatowania zapytania SQL dla powiadomień telefonicznych

  2. Konwertuj smallint na czas

  3. Jak wysłać e-mailem wyniki zapytania w SQL Server (T-SQL)

  4. Czy SQLExpress 2005 i 2008 można zainstalować na tym samym komputerze bez problemu?

  5. Pivots z dynamicznymi kolumnami w SQL Server