可能重複:
how to set auto increment after creating a table without any data loss?如何修改主鍵列以使其自動生成?
如何修改主鍵列SQL Server 2012的表(整型),因此,它的自動生成?
可能重複:
how to set auto increment after creating a table without any data loss?如何修改主鍵列以使其自動生成?
如何修改主鍵列SQL Server 2012的表(整型),因此,它的自動生成?
CREATE TABLE dbo.Test(PkCol int CONSTRAINT PK_Test_PkCol PRIMARY KEY, OtherCol varchar(1));
ALTER TABLE dbo.Test
DROP CONSTRAINT PK_Test_PkCol
GO
ALTER TABLE dbo.Test DROP COLUMN PkCol
ALTER TABLE dbo.Test
ADD PkCol int IDENTITY(1,1) CONSTRAINT PK_Test_PkCol PRIMARY KEY
GO
這對我的目的已經足夠好了,謝謝。 – aknuds1
您可以刪除現有的柱,並且指定爲IDENTITY
列類型添加新列。
但要小心!
我喜歡和複製從here以下評論:
如果你只是刪除現有的列並添加新列具有相同的名稱,但將其定義爲身份,你可能會修改主的價值表中某些記錄的關鍵字。不能保證新列將獲得與舊列相同的值。
由於沒有辦法將列本身修改爲標識列,所以必須創建一個具有標識列的新表,將舊錶中的數據插入新表(將set identity_insert設置爲on您將在新列中獲得與舊列中相同的值),重命名或刪除原始表(最好先重命名它,以便在出現問題時能夠回滾修改),將新表重命名爲原始表的名稱,重新創建引用原始表的外鍵並運行dbcc checkident
以將標識的種子初始化爲下一個數字。
[有一種方法可以將列本身修改爲標識列。](http://stackoverflow.com/questions/6084572/how-to-set-auto-increment-after-creating-a-table-without -any數據丟失) –
既然你說過SQL 2012,你還有另一種選擇:序列。查看Books Online關於如何使用「next value for」作爲列的默認值。
http://msdn.microsoft.com/en-us/library/ms186775(v=sql.105).aspx –