TSQL remove auto-increment properties / column identity from table – MSSQL 怎樣移除 Auto-increment Properties/ Column上的Identity 屬性

今天又是我繼續更新我的程式既日子..
目標是減小自行手動更改 Database的Structure
要盡量使用TSQL/Stored Procedure/SSIS

今日的難題是..
怎樣可以移除 Auto-increment Properties/ Column上的Identity 屬性
最後問了朋友之後得到了解決方法
TSQL上好像是沒有一個TSQL 可以直接 移除 Column上的Identity 屬性

解決方法:
在要移除 Column上的Identity 屬性的 Table/表 上加上新的一個Column

--ALTER TABLE dbo.[Table_Name] add [FieldName_Copy] int
--E.G.
ALTER TABLE dbo.ShareChiWai_tbl add [ShareChiWai_ID_Copy] int

之後我們便要執行 TSQL 來把在Identity Column的內容 複製到新建的Column上

--UPDATE dbo.[Table_Name] SET [New_Field_Name] = [Old_Field_Name]
--E.G.
UPDATE dbo.[ShareChiWai_tbl] SET [ShareChiWai_ID_Copy] = [ShareChiWai_ID]

完成後我們可以移除 這個Identity Column

ALTER TABLE dbo.[Table_Name] DROP COLUMN Old_Field_Name
E.G.
ALTER TABLE dbo.[ShareChiWai_tbl] DROP COLUMN ShareChiWai_ID

最後我們便可以用TSQL Command 來更改Column 名了

EXEC sp_rename
   @objname = 'Table_Name.FieldName',
   @newname = 'Field_Name_Update_To',
   @objtype = 'COLUMN'

E.G.

 EXEC sp_rename
 @objname = 'ShareChiWai_tbl.ShareChiWai_ID_Copy',
 @newname = 'ShareChiWai_ID',
 @objtype = 'COLUMN'
 

這樣我們便可以移除 這個Identity Column
又可以保留原有的Identity Column的值了

Hope you find it useful

Leave a Reply