2011-09-09 86 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。