0

我收到以下代码的错误

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

关键字附近的语法不正确IDENTITY

4

3 回答 3

6

不能将现有列更改为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'
于 2011-09-09T11:42:27.817 回答
0

来自 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'
    
于 2011-09-09T11:43:08.340 回答
-1

你必须删除“int”这个词。

ALTER TABLE ADM_Roles ALTER COLUMN RoleId IDENTITY (1, 1);
于 2011-09-09T11:44:21.230 回答