Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да добавя идентичност към колоната в SQL Server?

Вие не можете добавете IDENTITY към съществуваща колона. Просто не може да се направи.

Ще трябва да създадете нов колона от тип INT IDENTITY и след това изпуснете старата колона, от която вече не се нуждаете (и евентуално преименувайте новата колона със старото име - ако това е необходимо)

Също така:аз бихне направете това във визуалния дизайнер - това ще се опита да пресъздаде таблицата с новата структура, копирайте всички данни (всичките 10 милиона реда) и след това премахнете старата таблица.

Много по-ефективно е да използвате директни T-SQL изрази - това ще направи актуализация "на място", неразрушителна (не се губят данни) и не трябва да копирате около 10 милиона реда в процеса...

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

Когато добавите нова колона от тип INT IDENTITY към вашата таблица, тогава тя автоматично ще бъде попълнена с последователни числа. Не можете да спрете това да се случи и също така не можете да актуализирате стойностите по-късно.

Нито една от тези опции не е наистина много полезна в крайна сметка - може да се окажете с различни стойности на ID.... за да направите това правилно, ще трябва да:

  • създайте новата таблица преди време с правилната структура и IDENTITY вече е на място
  • след това включете SET IDENTITY_INSERT (yourtable) ON на тази таблица, за да позволи вмъкване на стойности в колоната за самоличност
  • копирайте тези данни от оригиналния източник
  • изключете отново вмъкването на самоличност:SET IDENTITY_INSERT (yourtable) OFF

Само с този подход ще можете да получите същите идентификатори в колона IDENTITY във вашата нова таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Рекурсивна замяна от таблица със знаци

  2. Как да създадете тип таблица в Sql Server 2005

  3. Съхранена процедура и разрешения - достатъчно ли е EXECUTE?

  4. Има ли някакъв начин за DISTINCT или групиране по текст (или ntext) в SQL Server 2005?

  5. Връщане на списък с таблици и изгледи в SQL Server с помощта на T-SQL (sp_tables)