Как добавить новый столбец идентификатора в таблицу на 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)')