如何将标识属性添加到SQL Server中的现有列

Tri*_*ick 35 t-sql sql-server identity

在SQL Server(在我的情况下,2005)中,如何使用T-SQL将identity属性添加到现有表列?

就像是:

alter table tblFoo 
    alter column bar identity(1,1)
Run Code Online (Sandbox Code Playgroud)

Joh*_*nFx 31

我不相信你能做到这一点.您最好的办法是创建一个新的标识列,并使用标识插入命令复制数据(如果您确实要保留旧值).

这是一篇很好的文章,详细描述了这个过程:http://www.mssqltips.com/tip.asp? tt = 1397


Nat*_*teJ 12

Vikash发布的解决方案不起作用; 它在SQL Management Studio中产生"语法不正确"错误(2005,指定的OP).SQL Server的"Compact Edition"支持这种操作的事实只是一个捷径,因为真正的过程更像Robert&JohnFX所说的 - 创建一个重复的表,填充数据,重命名原始和新表适当.

如果要保留字段中已存在的需要为标识的值,可以执行以下操作:

CREATE TABLE tname2 (etc.)
INSERT INTO tname2 FROM tname1

DROP TABLE tname1
CREATE TABLE tname1 (with IDENTITY specified)

SET IDENTITY_INSERT tname1 ON
INSERT INTO tname1 FROM tname2
SET IDENTITY_INSERT tname1 OFF

DROP tname2
Run Code Online (Sandbox Code Playgroud)

当然,不建议删除并重新创建实时代码使用的表(tname1)!:)