【发布时间】:2013-04-17 18:50:26
【问题描述】:
我在 SQL Server 中这样创建了一个表:
CREATE TABLE [UserName]
(
[ID] [int] NOT NULL ,
[Name] [nvarchar] (50) NOT NULL ,
[Address] [nvarchar] (200) NULL
CONSTRAINT [PK_UserName] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO
如果我想让ID 成为一个身份列,我需要什么?我是否需要删除并创建此表并将 ID 设置为 [ID] [int] IDENTITY(1,1) NOT NULL 。
使用 drop 和 create,UserName 表中的所有数据都将丢失。
是否有另一种方法可以将IDENTITY COLUMN 设置为已创建的表 的列而不丢失数据?
我使用 SQL Server 2008 R2 :)
【问题讨论】:
-
您可以只删除列 - 而不是整个表。但是您不能将
IDENTITY规范添加到现有列 - 这是不可能的。 -
@marc_s:嗯,这是有道理的。但是如果我的表的 ID 列已经在其他地方用作 FK,有没有更简单的方法?
-
@karank:不,很遗憾,您不能将
IDENTITY规范添加到现有列中。 -
@marc_s 你错了。将鼠标悬停在表格上,右键单击 -> 设计。单击所需的列,然后在列属性中,滚动到 Identity specification 并将 no 更改为 yes。
-
@MH:是的——你知道那是做什么的吗?它删除现有表,然后重新创建具有新标识规范的表。您不能将标识规范添加到现有表、现有列。期间。
标签: sql-server sql-server-2008-r2