可能重复:
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 –