Как добавить новый столбец идентификатора в таблицу на SQL Server?

Я использую SQL Server 2008 Enterprise. Я хочу добавить столбец идентификации (как уникальный кластерный индекс и первичный ключ) в существующую таблицу. Целое число, основанное на автоматическом увеличении на 1 столбец идентификации, в порядке. Любые решения?

BTW: моя самая путаница для существующих строк, как автоматически заполнять новые данные столбца идентификатора?

спасибо заранее, Джордж

Ответы

Ответ 1

вы можете использовать -

alter table <mytable> add ident INT IDENTITY

Это добавляет столбец идентификатора в вашу таблицу и добавляет данные, начиная с 1 и увеличивая на 1.

Чтобы добавить кластеризованный индекс -

CREATE CLUSTERED INDEX <indexName> on <mytable>(ident) 

Ответ 2

имеют один подход в виду, но не уверены, насколько это возможно в конце или нет. Но позвольте мне заверить вас, что это очень эффективный подход. Вы можете создать таблицу, имеющую столбец идентификатора, и вставить все данные в эту таблицу. И оттуда при обработке любых дубликатов данных происходит детская игра. Существует два способа добавления столбца идентификации в таблицу с существующими данными:

Create a new table with identity, copy data to this new table then drop the existing table followed by renaming the temp table.

Create a new column with identity & drop the existing column

Для справки я нашел 2 статьи: http://blog.sqlauthority.com/2009/05/03/sql-server-add-or-remove-identity-property-on-column/ http://cavemansblog.wordpress.com/2009/04/02/sql-how-to-add-an-identity-column-to-a-table-with-data/

Ответ 3

Не всегда у вас есть разрешения для команд DBCC.

Решение № 2:

create table #tempTable1 (Column1 int)
declare @new_seed varchar(20) = CAST((select max(ID) from SomeOtherTable) as varchar(20))
exec (N'alter table #tempTable1 add ID int IDENTITY('[email protected]_seed+', 1)')