Как я добавляю свойство идентификационных данных к существующему столбцу в SQL Server

35
задан marc_s 25 January 2017 в 16:45
поделиться

4 ответа

Я не полагаю, что можно сделать это. Ваш лучший выбор состоит в том, чтобы создать новый столбец идентификационных данных и скопировать данные по использованию идентификационных данных, вставляют команду (если Вы действительно хотите сохранить старые значения).

Вот достойная статья, описывающая процесс подробно: http://www.mssqltips.com/tip.asp?tip=1397

31
ответ дан JohnFx 27 November 2019 в 15:40
поделиться

Таблица заполняется? Если не отбрасывают и воссоздают таблицу.

, Если это заполняется, какие значения уже существуют в столбце? Если они - значения, Вы не хотите сохранять.

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

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

2
ответ дан Robert 27 November 2019 в 15:40
поделиться
alter table tablename 
alter column columnname 
add Identity(100,1)
-5
ответ дан a_m0d 27 November 2019 в 15:40
поделиться

The solution posted by Vikash doesn't work; it produces an "Incorrect syntax" error in SQL Management Studio (2005, as the OP specified). The fact that the "Compact Edition" of SQL Server supports this kind of operation is just a shortcut, because the real process is more like what Robert & JohnFX said--creating a duplicate table, populating the data, renaming the original & new tables appropriately.

If you want to keep the values that already exist in the field that needs to be an identity, you could do something like this:

CREATE TABLE tname2 (etc.)
INSERT INTO tname2 FROM tname1

DROP TABLE tname1
CREATE TABLE tname1 (with IDENTITY specified)

SET IDENTITY_INSERT tname1 ON
INSERT INTO tname1 FROM tname2
SET IDENTITY_INSERT tname1 OFF

DROP tname2

Of course, dropping and re-creating a table (tname1) that is used by live code is NOT recommended! :)

12
ответ дан 27 November 2019 в 15:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: