Подтвердить что ты не робот

Как изменить таблицу для Identity Specification - это идентификатор SQL Server


не работает

ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);

Проверить изображение

У меня есть таблица ProductInProduct хочет, чтобы ее идентификатор был уникальным.. enter image description here

4b9b3361

Ответ 1

Вы не можете "преобразовать" существующий столбец в столбец IDENTITY - вам нужно будет создать новый столбец как INT IDENTITY:

ALTER TABLE ProductInProduct 
ADD NewId INT IDENTITY (1, 1);

Update:

ОК, поэтому существует способ преобразования существующего столбца в IDENTITY. Если вам это абсолютно необходимо - проверьте этот ответ Мартина Смита со всеми подробностями gory.

Ответ 2

Вы не можете изменить существующие столбцы для идентификации.

У вас есть 2 варианта,

Создать новую таблицу с идентификатором и удалить существующую таблицу

Создайте новый столбец с идентификатором и удалите существующий столбец

Подход 1. (Новая таблица) Здесь вы можете сохранить существующие значения данных во вновь созданном столбце идентификации.

CREATE TABLE dbo.Tmp_Names
    (
      Id int NOT NULL
             IDENTITY(1, 1),
      Name varchar(50) NULL
    )
ON  [PRIMARY]
go

SET IDENTITY_INSERT dbo.Tmp_Names ON
go

IF EXISTS ( SELECT  *
            FROM    dbo.Names ) 
    INSERT  INTO dbo.Tmp_Names ( Id, Name )
            SELECT  Id,
                    Name
            FROM    dbo.Names TABLOCKX
go

SET IDENTITY_INSERT dbo.Tmp_Names OFF
go

DROP TABLE dbo.Names
go

Exec sp_rename 'Tmp_Names', 'Names'

Подход 2 (Новый столбец). Вы не можете сохранить существующие значения данных во вновь созданном столбце идентификации. Столбец идентификации будет содержать последовательность чисел.

Alter Table Names
Add Id_new Int Identity(1, 1)
Go

Alter Table Names Drop Column ID
Go

Exec sp_rename 'Names.Id_new', 'ID', 'Column'

Более подробную информацию см. на следующем форуме Microsoft SQL Server:

http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/04d69ee6-d4f5-4f8f-a115-d89f7bcbc032

Ответ 3

Вы не устанавливаете значение по умолчанию в таблице. Сначала следует очистить опцию "Значение по умолчанию или привязка".