SQL Server: как добавить новый столбец идентификаторов и заполнить столбец идентификаторами? - PullRequest
52 голосов
/ 23 февраля 2012

У меня есть таблица с огромным количеством данных. Я хотел бы добавить дополнительный столбец id и использовать его в качестве первичного ключа. Как лучше заполнить этот столбец значениями от одного 1 до row count

В настоящее время я использую курсор и обновляю строки одну за другой. Это занимает часы. Есть ли способ сделать это быстрее?

Спасибо

Ответы [ 2 ]

115 голосов
/ 23 февраля 2012

Просто сделайте это так:

ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)

, и столбец будет создан и автоматически заполнен значениями integer (как отмечает Аарон Бертран в своем комментарии - у вас нет никакого контроля над тем, какая строка получает какое значение - SQL Server обрабатывает это самостоятельно и Вы не можете влиять на это. Но все строки получат действительное значение int - NULL или повторяющихся значений не будет).

Далее установите его в качестве первичного ключа:

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)
1 голос
/ 28 сентября 2018

Если вы хотите добавить номера строк в определенном порядке, вы можете сделать ROW_NUMBER () в новой таблице, а затем удалить исходную.Однако, в зависимости от размера таблицы и других бизнес-ограничений, вы можете этого не делать.Это также подразумевает, что существует логика, согласно которой вы хотите отсортировать таблицу.

SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE
...