2011-09-09 61 views
0

我收到错误下面的代码SQL Server 2008中:ALTER TABLE查询

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

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

+0

[您是否支持分区?](http://stackoverflow.com/questions/6084572/how-to-set-auto-increment-after-creating-a-table-without-any-data -Loss/6086661#6086661) –

回答

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' 
0

从MSDN

You can't alter the existing columns for identity.

你有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' 
    
-1

必须删除单词 “INT”。

ALTER TABLE ADM_Roles ALTER COLUMN RoleId IDENTITY (1, 1); 
0

Tamnbien puede hacerlo一个traves德尔diagrama德群德DATOS,modificas拉斯propiedades德拉塔布拉Ÿagregar拉columna阙deseas阙海 “身份” EN LA columna “标识列”

ESO我arreglo el problema de agregar identity a una columna Existente。