SQL Server 2008: запрос ALTER TABLE - PullRequest
       7

SQL Server 2008: запрос ALTER TABLE

0 голосов
/ 09 сентября 2011

Я получаю ошибку для приведенного ниже кода

ALTER TABLE ADM_Roles ALTER COLUMN RoleID int IDENTITY (1, 1)

Неверный синтаксис рядом с ключевым словом IDENTITY.

Ответы [ 4 ]

6 голосов
/ 09 сентября 2011

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

ALTER TABLE dbo.ADM_Roles 
 ADD NewRoleID INT IDENTITY (1, 1)

Если вам нужно, вы можете позже удалить старый столбец и переименовать новый столбец в старое имя:

ALTER TABLE dbo.ADM_Roles DROP COLUMN RoleID

EXEC sp_rename @objName = 'dbo.ADM_Roles.NewRoleID', 
               @newName = 'RoleID', 
               @objType = 'COLUMN'
0 голосов
/ 26 ноября 2012

Tamnbien puede hacerlo a traves del diagrama de base de data, modifas las propiedades de la tabla y agregar la columna que deseas que море «идентичность» en la columna «столбец идентичности»

Eso me arreglo el problemmaде Агрегара идентичность существующего Уна Колумна.

0 голосов
/ 09 сентября 2011

вы должны удалить слово "int".

ALTER TABLE ADM_Roles ALTER COLUMN RoleId IDENTITY (1, 1);
0 голосов
/ 09 сентября 2011

из MSDN

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

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

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

  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'
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...